#django #datetime #django-models #django-views #filtering
#django #datetime #django-модели #django-представления #фильтрация
Вопрос:
Я использую Django 2.2.12.
В models.py У меня есть модель имени, Webregister
имеющая поле
created_on = models.DateTimeField(null=True, blank=True)
который возвращает данные в формате 2020-09-04 22:17:00 00:00
Чтобы отфильтровать дату, я написал этот запрос
Webregister.objects.filter(created_on__date=date.today())
и он возвращает следующую ошибку,
NotImplementedError: subclasses of BaseDatabaseOperations may require a datetime_extract_sql() method
Однако он работает нормально, если я использую __year
и выполняю следующий запрос,
Webregister.objects.filter(created_on__year="2020")
Пожалуйста, дайте мне знать, в чем проблема?
Ответ №1:
вы можете просто использовать обычный фильтр с объектами datetime или date, если они сопоставимы :
class Model(models.Model):
created_on = models.DateTimeField(null=True, blank=True)
data = Model.objects.filter(created_on__exact=datetime.now())
Ваша ошибка, вероятно, заключается в сравнении между вашим DateTimeField()
(который является datetime
объектом) и date.now()
(который является date
объектом)
Вы также можете использовать lt
, gt
но эти два данных должны быть сопоставимы