I created an item today, and now am trying to view it with date_based.object_detail. Unfortunately, the condition condition "date must be <= today" isn't working right.
blog.notes does not exist for {'title__exact': 'test-title', 'created__lte': datetime.datetime(2005, 8, 21, 18, 34, 26, 74000), 'created__range': (datetime.datetime(2005, 8, 21, 0, 0), datetime.datetime(2005, 8, 21, 23, 59, 59, 999999))}
Turns out it's some sort of off-by-one bug in the lte handler. If the <= comparison compares against tomorrow, it works fine, e.g. with
Index: django/views/generic/date_based.py
===================================================================
--- django/views/generic/date_based.py (revision 544)
+++ django/views/generic/date_based.py (working copy)
@@ -221,6 +221,8 @@
'%s__range' % date_field: (datetime.datetime.combine(date, datetime.time.min), datetime.datetime.combine(date, datetime.time.max)),
}
# Only bother to check current date if the date isn't in the past.
+ from datetime import timedelta
+ now += timedelta(days = 1)
if date >= now.date():
lookup_kwargs['%s__lte' % date_field] = now
if object_id:
I'm on SQLite, windows, python 2.4, svn [544]. Maybe it's a sqlite date comparison bug or something.