summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2006-06-28 11:37:17 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2006-06-28 11:37:17 +0000
commit414bc24e81014239cc71f0b04e85622050068e9d (patch)
tree60d1d2beadd64fec33104a7366af8731895d2a8f
parentd6c95e93a7a6b31e68789dc586b2cfa446cf8c50 (diff)
Fixed #1754, #2211, #2192 -- allow date filtering comparisons to use strings as
well as date objects. Fixed a couple of admin crashes as well. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3223 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/fields/__init__.py2
-rw-r--r--tests/modeltests/lookup/models.py4
2 files changed, 5 insertions, 1 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index bc6042ae59..8b000d3c2a 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -411,7 +411,7 @@ class DateField(Field):
def get_db_prep_lookup(self, lookup_type, value):
if lookup_type == 'range':
value = [str(v) for v in value]
- elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'ne'):
+ elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte', 'ne') and hasattr(value, 'strftime'):
value = value.strftime('%Y-%m-%d')
else:
value = str(value)
diff --git a/tests/modeltests/lookup/models.py b/tests/modeltests/lookup/models.py
index e0c4850ba2..a2c0a14158 100644
--- a/tests/modeltests/lookup/models.py
+++ b/tests/modeltests/lookup/models.py
@@ -58,6 +58,10 @@ Article 4
>>> Article.objects.filter(headline__startswith='Blah blah').count()
0L
+# Date and date/time lookups can also be done with strings.
+>>> Article.objects.filter(pub_date__exact='2005-07-27 00:00:00').count()
+3L
+
# in_bulk() takes a list of IDs and returns a dictionary mapping IDs
# to objects.
>>> Article.objects.in_bulk([1, 2])