summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-09-28 04:36:10 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-09-28 04:36:10 +0000
commitbaa960209f4f946d333987fbabcf13d26abfeb89 (patch)
tree9c4df44dcda51dbe8c85c10c63fe09d9533cd534 /tests
parent4eb26b1659dbb3034c85df34758992b1b5601f73 (diff)
Fixed Queryset.dates() in the presence of extra-select columns.
Any extra(select=...) columns can be ignored in the SQL for dates, since we are only interested in extracting distinct date values. We were previously including them by accident and it was generating incorrect SQL. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9091 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/extra_regress/models.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/tests/regressiontests/extra_regress/models.py b/tests/regressiontests/extra_regress/models.py
index 5a98a5dac4..680917b8ae 100644
--- a/tests/regressiontests/extra_regress/models.py
+++ b/tests/regressiontests/extra_regress/models.py
@@ -1,4 +1,5 @@
import copy
+import datetime
from django.contrib.auth.models import User
from django.db import models
@@ -9,6 +10,7 @@ from django.utils.datastructures import SortedDict
class RevisionableModel(models.Model):
base = models.ForeignKey('self', null=True)
title = models.CharField(blank=True, max_length=255)
+ when = models.DateTimeField(default=datetime.datetime.now)
def __unicode__(self):
return u"%s (%s, %s)" % (self.title, self.id, self.base.id)
@@ -31,12 +33,13 @@ class Order(models.Model):
__test__ = {"API_TESTS": """
# Regression tests for #7314 and #7372
->>> rm = RevisionableModel.objects.create(title='First Revision')
+>>> rm = RevisionableModel.objects.create(title='First Revision', when=datetime.datetime(2008, 9, 28, 10, 30, 0))
>>> rm.pk, rm.base.pk
(1, 1)
>>> rm2 = rm.new_revision()
>>> rm2.title = "Second Revision"
+>>> rm.when = datetime.datetime(2008, 9, 28, 14, 25, 0)
>>> rm2.save()
>>> print u"%s of %s" % (rm2.title, rm2.base.title)
Second Revision of First Revision
@@ -107,4 +110,9 @@ True
>>> User.objects.filter(pk=u.id).extra(select={'extra_field': 1}, order_by=['extra_field']).distinct()
[<User: fred>]
+# When calling the dates() method on a queryset with extra selection columns,
+# we can (and should) ignore those columns. They don't change the result and
+# cause incorrect SQL to be produced otherwise.
+>>> RevisionableModel.objects.extra(select={"the_answer": 'id'}).dates('when', 'month')
+[datetime.datetime(2008, 9, 1, 0, 0)]
"""}