Как я могу отфильтровать дату DateTimeField в Django?

Я знаю о по крайней мере одном крупномасштабном проекте ( КОРЕНЬ ), который рекламирует использование [powerpoint ссылка] , механизм, описанный в Рекурсивном, Делает Продуманными Вредный. Платформа превышает миллион строк кода и компиляций вполне энергично.

И, конечно, все великоватые проекты я работаю с тем , делают , используют рекурсивный, делают, мучительно не спешат компилировать.:: вздох::

159
задан Serjik 19 December 2015 в 08:54
поделиться

6 ответов

См. Статью Документация Django

Она очень похожа на ответ JZ

ur_data_model.objects.filter(ur_date_field=datetime(2005, 7, 27)
0
ответ дан 23 November 2019 в 21:34
поделиться
YourModel.objects.filter(datetime_published__year='2008', 
                         datetime_published__month='03', 
                         datetime_published__day='27')

// редактировать после комментариев

YourModel.objects.filter(datetime_published=datetime(2008, 03, 27))

не работает, потому что он создает объект datetime со значениями времени, установленными на 0, поэтому время в базе данных не совпадает.

95
ответ дан 23 November 2019 в 21:34
поделиться
Model.objects.filter(datetime__year=2011, datetime__month=2, datetime__day=30)
0
ответ дан 23 November 2019 в 21:34
поделиться

В django.views.generic.date_based такие поиски реализованы следующим образом:

{'date_time_field__range': (datetime.datetime.combine(date, datetime.time.min),
                            datetime.datetime.combine(date, datetime.time.max))} 

В связи с тем, что он достаточно многословен, планируется усовершенствовать синтаксис с помощью оператора __date. Проверьте "#9596 Сравнение поля DateTimeField с датой слишком сложно" для более подробной информации

.
109
ответ дан 23 November 2019 в 21:34
поделиться

Это дает те же результаты, что и использование __года, __месяца и __дня и, похоже, работает для меня:

YourModel.objects.filter(your_datetime_field__startswith=datetime.date(2009,8,22))
25
ответ дан 23 November 2019 в 21:34
поделиться

Хм .. Мое решение работает:

Mymodel.objects.filter(date_time_field__startswith=datetime.datetime(1986, 7, 28))
1
ответ дан 23 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: