Opened 15 years ago

Closed 15 years ago

Last modified 11 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: dev
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

Description

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()

Query:

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 15 years ago.

Download all attachments as: .zip

Change History (7)

comment:1 by oyvind, 15 years ago

Component: UncategorizedORM aggregation
Owner: nobody removed

by Alex Gaynor, 15 years ago

Attachment: annotate-dates.diff added

comment:2 by oyvind, 15 years ago

Has patch: set
Triage Stage: UnreviewedAccepted

comment:3 by Erin Kelly, 15 years ago

Version: 1.0SVN

comment:4 by Russell Keith-Magee, 15 years ago

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 by Russell Keith-Magee, 15 years ago

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 by Anssi Kääriäinen, 11 years ago

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