Opened 11 years ago

Closed 11 years ago

Last modified 7 years ago

#10248 closed (fixed)

Calling .dates on a annotated queryset gives wrong sql

Reported by: oyvind Owned by:
Component: Database layer (models, ORM) Version: master
Severity: Keywords: annotate dates queryset
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


Example models

class Photo(models.Model):
    title = models.CharField(max_length=30)

class Gallery(models.Model):
    title = models.CharField(max_length=30)
    photos = models.ManyToManyField(Photo)
    date_published = models.DateField()


from django.db import connection
from django.db.models import Count

Gallery.objects.dates('date_published', 'year')

print connection.queries[-1]

Gallery.objects.annotate(photo_count=Count('photos__id')).dates('date_published', 'year')

print connection.queries[-1]

Attachments (1)

annotate-dates.diff (1.6 KB) - added by Alex Gaynor 11 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 Changed 11 years ago by oyvind

Component: UncategorizedORM aggregation
Owner: nobody deleted

Changed 11 years ago by Alex Gaynor

Attachment: annotate-dates.diff added

comment:2 Changed 11 years ago by oyvind

Has patch: set
Triage Stage: UnreviewedAccepted

comment:3 Changed 11 years ago by Ian Kelly

Version: 1.0SVN

comment:4 Changed 11 years ago by Russell Keith-Magee

Resolution: fixed
Status: newclosed

(In [9839]) Fixed #10248 -- Corrected handling of the GROUP BY clause when using a DateQuerySet. Thanks to Alex Gaynor for the report and patch.

comment:5 Changed 11 years ago by Russell Keith-Magee

I'm on a roll tonight - that's 2 messed up commit messages in a row. Apologies to Oyvind Saltvik for misattributing the original report to Alex in the commit message. Still giving thanks to Alex for the patch, though :-)

comment:6 Changed 7 years ago by Anssi Kääriäinen

Component: ORM aggregationDatabase layer (models, ORM)
Note: See TracTickets for help on using tickets.
Back to Top