Django: значение имеет правильный формат (ГГГГ-ММ-ДД), но это недопустимая дата

#python #django #django-views

#python #django #django-просмотры

Вопрос:

Я работаю с непальской датой, и следующая дата верна, но django не позволяет мне запускать запрос.

 search_range = Trans.objects.filter(tr_date__gte='2077-04-01', tr_date__lte='2077-04-32')
  

У меня есть следующий код, который работает нормально, если я указываю дату до 2077-04-30. Но, согласно непальскому календарю, 4-й месяц имеет 32 дня. Когда я пытаюсь выполнить запрос с 32-го дня, django возвращает следующую ошибку.

 ValidationError at /trans/list/search/

['“2077-04-32” value has the correct format (YYYY-MM-DD) but it is an invalid date.']

Request Method:     GET
Request URL:    http://127.0.0.1:8000/trans/list/search/
Django Version:     3.1
Exception Type:     ValidationError
Exception Value:    

['“2077-04-32” value has the correct format (YYYY-MM-DD) but it is an invalid date.']
  

Как я могу получить данные в указанном диапазоне? Любое предложение высоко ценится.

Ответ №1:

Почему бы просто не использовать tr_date__lt=’2077-05-01′, т. Е. Чуть меньше 5/1 — я лично никогда не слышал о том, что в любом месяце 32 дня, но если вы просто отфильтруете менее 5/1, разве это не даст тот же результат?

Комментарии:

1. Большое вам спасибо Э.Дж. Бреннан. Предложенный вами способ решил мою проблему. Мы используем непальский календарь, в котором вместо AD указана дата BS. В месяце до 32 дней. Общее количество дней в месяце рассчитывается на основе движения Луны.