Тут є фантастичний блог, який висвітлює це: Порівняння дат та дат у ORG Django
Найкраще рішення, розміщене для Django> 1.7, <1.9, - це зареєструвати перетворення:
from django.db import models
class MySQLDatetimeDate(models.Transform):
"""
This implements a custom SQL lookup when using `__date` with datetimes.
To enable filtering on datetimes that fall on a given date, import
this transform and register it with the DateTimeField.
"""
lookup_name = 'date'
def as_sql(self, compiler, connection):
lhs, params = compiler.compile(self.lhs)
return 'DATE({})'.format(lhs), params
@property
def output_field(self):
return models.DateField()
Тоді ви можете використовувати його у своїх фільтрах так:
Foo.objects.filter(created_on__date=date)
EDIT
Це рішення, безумовно, залежить від зворотного кінця. Зі статті:
Звичайно, ця реалізація покладається на ваш особливий смак SQL, який має функцію DATE (). MySQL робить. Так само і SQLite. З іншого боку, я особисто не працював з PostgreSQL, але деякий googling приводить мене до думки, що він не має функції DATE (). Отже, реалізація цієї простої здається, що вона обов'язково буде дещо залежною.