#34005: In Django 3.2 the ORM looses Meta.ordering default order when .annotate
is
used
-------------------------------------+-------------------------------------
Reporter: pzdump | Owner: nobody
Type: Bug | Status: new
Component: Database | Version: 3.2
layer (models, ORM) | Keywords: orm Meta
Severity: Normal | Options.ordering annotate
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Hi,
I've upgraded from 2.2 to 3.2 and now default ordering specified in the
Model does not work anymore if i annotate the QuerySet.
I suspect this is a ORM Bug, as the ordering / default order is not in the
query anymore since the update to 3.2.
Product class:
{{{
class Product(models.Model):
...
class Meta:
ordering = ["name"]
}}}
Default ordering is working nicely without annotate ... see ORDER BY
{{{
>>> print(Product.objects.all().select_related("category").query)
SELECT "memberapp_product"."id", [...] FROM "memberapp_product" INNER
JOIN "memberapp_productcategory" ON ("memberapp_product"."category_id" =
"memberapp_productcategory"."id") ORDER BY "memberapp_product"."name" ASC
}}}
but not anymore when annotate (with a special sum) is used - no ORDER BY
anymore in the query:
{{{
>>>
print(Product.objects.all().select_related("category").annotate(**kwargs).query)
SELECT "memberapp_product"."id", [...] LEFT OUTER JOIN
"memberapp_appointment" ON
("memberapp_appointmentattendee"."appointment_id" =
"memberapp_appointment"."id") INNER JOIN "memberapp_productcategory" ON
("memberapp_product"."category_id" = "memberapp_productcategory"."id")
GROUP BY "memberapp_product"."id", "memberapp_productcategory"."id"
}}}
Since it's been working before i would expect something in the ORM looses
the order by in complex queries using annotate.
Thanks for looking into this.
--
Ticket URL: <https://code.djangoproject.com/ticket/34005>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018329898eeb-8d5c591a-d257-46ff-835c-3e6f9ff0c7f6-000000%40eu-central-1.amazonses.com.