__init__() получил неожиданный ключевой аргумент «требуется»

По какой-то причине Django не позволяет передать параметр required=False в поля моей формы.

Это моя форма:

class InstrumentSearch(forms.ModelForm): 
    groups = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
    time = forms.TimeInput(required=False)
    date = forms.DateField(required=False)
    notes = forms.TextInput(required=False)

Ошибка на линии

time = forms.TimeInput(required=False)

Согласно документации Django здесь, это должно работать.


person CodyBugstein    schedule 28.07.2014    source источник
comment
TimeInput является предком Widget, а не Field, как вы ожидаете. У вас будет та же проблема с TextInput — это тоже виджет.   -  person yedpodtrzitko    schedule 28.07.2014


Ответы (2)


Мне кажется, что TimeInput наследуется от Widget (через TextInput), который принимает атрибуты в одном словаре как аргумент attrs. Примеры с TextInput показывают использование required:

>>> name = forms.TextInput(attrs={'required': False})

Напротив, подклассы Field, такие как TimeField и CharField, принимают аргументы ключевых слов, как вы используете.

person Yann Vernier    schedule 28.07.2014
comment
Это не ответ. Вы не можете использовать виджеты на верхнем уровне: они должны быть частью поля. - person Daniel Roseman; 28.07.2014

Вместо использования required попробуйте использовать blank. blank=False означает, что это не требуется.

time = forms.TimeInput(blank=True)
person Aminah Nuraini    schedule 12.09.2016
comment
Это должен быть принятый ответ - person Sinister Beard; 02.07.2021