Неверная дата django проверка формы - PullRequest
0 голосов
/ 30 апреля 2020

Я учусь Django и создаю CRUD , но я получаю ошибку в моей проверке формы .

Это это форма, которую ** я создал **

class addSignForm(forms.ModelForm):
active = forms.CharField(max_length=10)

class Meta:
    model = signs
    fields = ("id", "active", "action", "date", "expiration_date", "add_by", "user_sign")
    widgets = {
        'date': forms.DateTimeInput(attrs={'type': 'datetime-local'}, format='%Y-%m-%dT%H:%M'),
    }

Это дата, которую я получаю из запроса ** (также пробовал формат: '% y-% m- % dT% H:% M '

'2000-04-16T18:57'

И когда я пытаюсь:

if (form.is_valid()):

говорит, что это недопустимая форма и что я набрал недопустимая дата

<li>Enter a valid date/time.</li></ul>

может кто-нибудь мне помочь

Ответы [ 3 ]

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

Формат вашего виджета просто отображается для клиента, а не для формы. Так что вы можете попробовать добавить метод с именем clean_date (self), чтобы заменить 'T' пробелом, а затем вернуть его. или добавьте свой формат в список settings.py для DATETIME_INPUT_FORMATS.

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

"2000-04-16T18:57" не в формате %d/%m/%Y %H:%M, а в формате %Y-%m-%dT%H:%M. Проверьте список форматеров даты здесь https://docs.python.org/3/library/datetime.html#strftime -и-strptime-format-коды

0 голосов
/ 30 апреля 2020

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

То, что я сделал, было:

создать копию моего GET, чтобы он стал изменчивым

getCopy = request.GET.copy()

после этого я преобразовал ДАТУ, которая пришла из GET

ts = time.strptime(request.GET['date'], "%Y-%m-%dT%H:%M")
getCopy['date'] = time.strftime("%m/%d/%Y", ts)

и когда я вызываю мой form.is_valid вместо передачи запроса. GET, я передаю свою изменяемую копию GET с моей отформатированной датой:)

...