1 | | I want to discuss when collecting group by columns why are order by columns added into extensions. |
2 | | |
3 | | For example: |
4 | | Model.objects.values("col_a").annotate(max=Max("col_b")).order_by('col_c') |
5 | | current query: |
6 | | |
7 | | |
8 | | {{{ |
9 | | select col_a, MAX(col_b) as max |
10 | | from Model |
11 | | group by col_a, col_c |
12 | | order by col_c |
13 | | }}} |
14 | | |
15 | | I think the expected behavior has should be like that: |
16 | | django.db.utils.ProgrammingError: column "Model.col_c" must appear in the GROUP BY clause or be used in an aggregate function |
17 | | |
18 | | Because this behavior changes my group by and result. if I'm lucky, my result doesn't change. |
19 | | |
20 | | If we check test_annotation_with_value, 'name' column is being added into group_by because Book model has Meta.ordering. |