Фильтрация django модели по дате - PullRequest
2 голосов
/ 27 апреля 2020

Мне нужно отфильтровать некоторые данные из моделей по дате. Я вижу некоторые сообщения, которые говорят о диапазонах, но я просто хочу увидеть, например, строки моей таблицы от 22/04/2020, другими словами, только один день.

Чтение документации , я понял, что должен сделать следующее,

import datetime

prueba = DevData.objects.order_by('-data_timestamp').filter(data_timestamp=datetime.date(2020, 4, 22))
prueba = loads(serializers.serialize('json', prueba))
for p in prueba:
    print(p)

Но появляется следующее предупреждение:

RuntimeWarning: DateTimeField DevData.data_timestamp получил наивное datetime (2020- 04-22 00:00:00) при активной поддержке часового пояса.

И список кажется пустым. Я думаю, что проблема в том, что просто фильтрация с использованием 2020-04-22 00:00:00, а не весь день. Как я могу это исправить?

Между двумя датами работает, но только один день я не знаю, как это сделать.

import datetime

start_date = datetime.date(2020, 4, 22)
end_date = datetime.date(2020, 4, 23)
prueba = DevData.objects.order_by('-data_timestamp').filter(data_timestamp__range= (start_date,end_date))

PD: у меня есть информационные строки в в этот день.

Большое спасибо.

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете использовать поиск __date [Django -doc] для фильтрации по дате отметки времени:

import datetime

prueba = DevData.objects.order_by(
    '-data_timestamp'
).filter(
    <b>data_timestamp__date=datetime.date(2020, 4, 22)</b>
)
...