#22923: order_by clause missing on nested queryset
-------------------------------+--------------------
     Reporter:  grantjenks     |      Owner:  nobody
         Type:  Bug            |     Status:  new
    Component:  Uncategorized  |    Version:  1.6
     Severity:  Normal         |   Keywords:
 Triage Stage:  Unreviewed     |  Has patch:  0
Easy pickings:  0              |      UI/UX:  0
-------------------------------+--------------------
 The ORDER BY clause is getting dropped on a nested queryset with the
 sqlite3 database backend.

 Repro steps:

 models.py

 {{{
 from django.db import models

 class Report(models.Model):
     modify_time = models.DateTimeField(auto_now=True)
     uuid = models.CharField(max_length=36, unique=True)
     deleted = models.BooleanField(default=False)

 class Measure(models.Model):
     report = models.ForeignKey(Report, db_column='report_uuid',
 to_field='uuid', on_delete=models.CASCADE)
 }}}


 python manage.py shell

 {{{
 In [1]: from testtest.models import Report, Measure

 In [2]: reports =
 Report.objects.filter(deleted=False).order_by('-modify_time')[:5]

 In [3]: print reports.query
 SELECT "deleteme_report"."id", "deleteme_report"."modify_time",
 "deleteme_report"."uuid", "deleteme_report"."deleted" FROM
 "deleteme_report" WHERE "deleteme_report"."deleted" = False  ORDER BY
 "deleteme_report"."modify_time" DESC LIMIT 5

 In [4]: measures = Measure.objects.filter(report__in=reports)

 In [5]: print measures.query
 SELECT "deleteme_measure"."id", "deleteme_measure"."report_uuid" FROM
 "deleteme_measure" WHERE "deleteme_measure"."report_uuid" IN (SELECT
 "deleteme_report"."uuid" FROM "deleteme_report" WHERE
 "deleteme_report"."deleted" = False  LIMIT 5)
 }}}

 Note that reports.query includes the ORDER BY clause but when nested in
 measures.query, it is missing.

 settings.py is stock from django-admin.py in v1.6 on CPython 2.7.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/22923>
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/053.9f9f08a7a0207ae1caa6a0b22d1a11c5%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to