Warnings.warn("Поле DateTimeField %s получило наивный datetime (%s)"

Я использую django simple-history для получения истории по моим моделям. Затем я ищу результаты истории по дате, но получаю ошибку, описанную ниже. Как я могу отформатировать дату?

RuntimeWarning: DateTimeField HistoricalIssue.history_date received a naive datetime (2022-04-13 10:34:32) while time zone support is active.
  warnings.warn("DateTimeField %s received a naive datetime (%s)"



def SearchByDate(request):
        date_search = request.POST['date-search']
        if date_search:
            admin_hist_search_results = Issue.history.filter(history_date=date_search)

Во-первых, имейте в виду, что это не ошибка, а "только" предупреждение. В нем говорится о том, что входящая временная метка (которую вы храните в переменной date_search) не содержит информации о часовом поясе, в то время как вы сравниваете ее с полем временной метки (history_date в модели Issue), которое содержит информацию о часовом поясе. Это потенциально может привести к проблемам.

Если вам известен часовой пояс, поступающий из запроса, вы можете добавить эту информацию к метке времени, например:

import pytz

amsterdam_timezone = pytz.timezone('Europe/Amsterdam')
date_search = amsterdam_timezone.localize(request.POST['date-search'])
Вернуться на верх