Джанго проверить форму с RangeWidget - PullRequest
0 голосов
/ 16 мая 2018

У меня есть форма:

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['name', 'description', 'slot',]

        widgets = {
            'slot': RangeWidget(forms.DateTimeInput()),
            }

Я получаю форму в виде:

if request.POST:
    form = MyForm(data=request.POST)
    if form.is_valid():

Но форма никогда не проверяется, так как опубликованные параметры:

name: 'TEST', description : 'fsd', slot_0: '2018/05/15 21:00:00', slot_1: '2018/05/15 21:30:00', submit: 'submit'

Ошибки формы:

Enter a valid date/time.

Я предполагал, что django автоматически создаст кортеж объектов datetime для опубликованных значений, но, очевидно, нет. Как я могу проверить эту форму и сохранить ее в базе данных?

1 Ответ

0 голосов
/ 16 мая 2018

Ваш формат даты и времени неверен.Попробуйте добавить следующий метод в качестве __init__ формы для соответствия формату из данных публикации:

def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    for field in self.fields['slot'].fields:
        field.input_formats.append("%Y/%m/%d %H:%M:%S")

Другим решением будет форматирование данных перед отправкой на сервер.В этом случае вы можете отправить, например, «2018-05-15 21:00:00», который будет соответствовать формату, который уже существует в списке input_formats.

...