@coalesce

Как в Django работать с датами на форме?

Не могу разобраться как принять ДатуВремя на форме.
Получаю ошибку
Введите правильную дату и время.
Enter a valid date/time.

На форме использую виджет DateInput с типом datetime-local и localize=True

forms.py
date_field = forms.DateTimeField(required=False, widget=DateInput(attrs={'type': 'datetime-local'}),
                                     initial=datetime.date.today(), localize=True)


в шаблоне выглядит всё хорошо
zioy16eiymyt0k7e6dlmsxisvpu.png
<input type="datetime-local" value="2017-11-10T00:00">

При отправке формы, получаю ошибки валидации.

Пробовал добавлять input_formats='%yyyy-%mm-%ddT%H:%M'
Однако, это не помогло. Возможно нужно задать другой формат input_formats?
Можно ли (как) обойтись стандартной валидацией DateTimeField, без указания собственной валидации формы?

settings.py
LANGUAGE_CODE = 'ru-ru'
TIME_ZONE = 'Europe/Moscow'
USE_I18N = True
USE_L10N = True
USE_TZ = True
  • Вопрос задан
  • 6389 просмотров
Решения вопроса 2
@deliro
Формат неверный. Хоть бы в доке посмотрел https://docs.python.org/3/library/datetime.html#st...
Ответ написан
@coalesce Автор вопроса
Спасибо javedimka !
Решение было в правильном указании input_formats
В моём случае:
1) Обернуть в кортеж (или список)
2) Неправильно писать %yyyy-%dd-%mm, нужно так %Y-%m-%d, по аналогии с документацией
Итого рабочий вариант:
input_formats=['%Y-%m-%dT%H:%M']

P.S. и начальное значение тоже пришлось обернуть
initial=format(datetime.date.today(),'%Y-%m-%dT%H:%M')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы