[Django] #28705: Wrong annotation when used with order_by

4 views
Skip to first unread message

Django

unread,
Oct 11, 2017, 10:59:34 PM10/11/17
to django-...@googlegroups.com
#28705: Wrong annotation when used with order_by
-------------------------------------+-------------------------------------
Reporter: Rafael | Owner: nobody
Capucho |
Type: Bug | Status: new
Component: | Version: 1.11
Uncategorized | Keywords: Annotate, ORM,
Severity: Normal | Order_by
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Related to old closed ticket: https://code.djangoproject.com/ticket/25316

# Models

{{{
class Application(models.Model):
package_name = models.CharField(max_length=128, null=False,
blank=True)
package_version_code = models.IntegerField(blank=True)
package_version_name = models.CharField(max_length=64, null=False,
blank=True)
label = models.CharField(max_length=64, null=False, blank=True)

class Meta:
ordering = ['label', 'package_version_code']

class Profile(models.Model):
applications = models.ManyToManyField(
'applications.Application',
related_name='application_%(class)s',
blank=True
)

class Device(models.Model):
profile = models.ForeignKey(
Profile,
related_name='devices',
blank=True,
null=True
)
}}}

The error is:
[[Image(https://i.imgur.com/JbUyRQJ.png)]]

--
Ticket URL: <https://code.djangoproject.com/ticket/28705>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Oct 11, 2017, 10:59:57 PM10/11/17
to django-...@googlegroups.com
#28705: Wrong annotation when used with order_by
-------------------------------------+-------------------------------------
Reporter: Rafael Capucho | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 1.11
Severity: Normal | Resolution:
Keywords: Annotate, ORM, | Triage Stage:
Order_by | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Rafael Capucho):

* Attachment "JbUyRQJ.png" added.

Django

unread,
Oct 17, 2017, 10:27:24 AM10/17/17
to django-...@googlegroups.com
#28705: Wrong annotation when used with QuerySet.order_by()

-------------------------------------+-------------------------------------
Reporter: Rafael Capucho | Owner: nobody
Type: Bug | Status: new
Component: Database layer | Version: 1.11
(models, ORM) |

Severity: Normal | Resolution:
Keywords: Annotate, ORM, | Triage Stage:
Order_by | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

* component: Uncategorized => Database layer (models, ORM)


Comment:

Could you add a `tests.py` file that demonstrates the issue (and/or
replace the screenshot in the description)? The screenshot isn't
particularly friendly for someone trying to reproduce this since they have
to retype everything.

Did you read the
[https://docs.djangoproject.com/en/dev/topics/db/aggregation
/#aggregations-and-other-queryset-clauses aggregation topic guide] to
ensure that none of the documented issues there are the cause of the
behavior?

--
Ticket URL: <https://code.djangoproject.com/ticket/28705#comment:1>

Django

unread,
Oct 21, 2017, 3:26:18 PM10/21/17
to django-...@googlegroups.com
#28705: Wrong annotation when used with QuerySet.order_by()
-------------------------------------+-------------------------------------
Reporter: Rafael Capucho | Owner: nobody
Type: Bug | Status: new

Component: Database layer | Version: 1.11
(models, ORM) |
Severity: Normal | Resolution:
Keywords: Annotate, ORM, | Triage Stage:
Order_by | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Tomer Chachamu):

It looks like this section explains the behaviour:
https://docs.djangoproject.com/en/1.11/topics/db/aggregation/#interaction-
with-default-ordering-or-order-by

Maybe you want to use `.annotate(...).order_by('label', 'latest')`
instead?

--
Ticket URL: <https://code.djangoproject.com/ticket/28705#comment:2>

Django

unread,
Oct 21, 2017, 3:27:50 PM10/21/17
to django-...@googlegroups.com
#28705: Wrong annotation when used with QuerySet.order_by()
-------------------------------------+-------------------------------------
Reporter: Rafael Capucho | Owner: nobody
Type: Bug | Status: closed

Component: Database layer | Version: 1.11
(models, ORM) |
Severity: Normal | Resolution: needsinfo

Keywords: Annotate, ORM, | Triage Stage:
Order_by | Unreviewed
Has patch: 0 | Needs documentation: 0

Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tomer Chachamu):

* status: new => closed
* resolution: => needsinfo


Comment:

Also, if you can provide the output that you expected for each of the
queries, that would help us understand the issue :)

--
Ticket URL: <https://code.djangoproject.com/ticket/28705#comment:3>

Reply all
Reply to author
Forward
0 new messages