Я создаю подкласс ModelForm
и изменяю виджет по умолчанию для DateTimeField
:
class CustomModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CustomModelForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
field = self.fields[field_name]
if isinstance(field, formfields.DateTimeField):
field.widget = SplitDateTimeWidget()
class Meta:
model = MyModel
fields = fields = '__all__'
View
очень прост:
class CustomCreateView(LoginRequiredMixin, CreateView):
template_name = 'mytemplate.html'
def get_form_class(self):
form_class = CustomModelForm
return form_class
Однако, это приводит к следующей ошибке при обработке формы:
AttributeError в / lists / event / create объект list не имеет атрибута 'strip'
Я знаю, что это связано с SplitDateTimeWidget()
, но не могу понять, почему. Если я применяю виджет стандартным способом 1-1 с именованными полями через Meta, я все равно получаю эту ошибку.
С чего мне начать искать отладку?
Обновить
Я думаю, что я сузил ошибку до SplitDateTimeWidget
должен использовать forms.SplitDateTimeField
не по умолчанию forms.DateTimeField
, который унаследован от models.DateTimeField
(согласно документам )
Однако я не уверен, как мне установить тип поля в этом l oop? field = forms.SplitDateTimeField()
тип поля не применяется.