Как реализовать SplitDateTImeWidget для DateTimeField - PullRequest
0 голосов
/ 13 января 2020

Я создаю подкласс 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() тип поля не применяется.

...