Как добавить виджет в поле формы в init в django?

В принципе, я хочу изменить виджет поля формы в функции init. Прежде всего, вот форма:

class ModelForm(forms.ModelForm):
    date = forms.ChoiceField()

    def __init__(self, *args, **kwargs):
        super(ModelForm, self).__init__(*args, **kwargs)
        self.fields['date'].choices = DATE_CHOICES

    class Meta:
        model = Model
        fields = (
            'date',
         )
         widgets = {'date': SelectDateWidget()}

Однако виджет SelectDateWidget() по какой-то причине не работает. Поэтому я хочу вместо этого добавить этот виджет в функцию init, чтобы виджет отражался на форме. Однако это только моя мысль. Если добавление этого виджета в функцию init не сработает, не могли бы вы подсказать мне способ использования этого виджета для поля date? Спасибо, и пожалуйста, оставляйте мне любые вопросы, которые у вас есть.

Если предположить, что дата является DateField, то можно добавить SelectDateWidget следующим образом :

class ModelForm(forms.ModelForm):
    date = forms.DateField(widget=forms.SelectDateWidget(empty_label=("Choose Year", "Choose Month", "Choose Day"),))

    class Meta:
        model = Model
        fields = (
            'date',
        )

Теперь, если вы хотите добавить некоторые определенные варианты, перейдите по этой ссылке для получения более подробной информации.

Документ здесь также полезно прочитать.

NB : Вам не нужно переопределять метод__init__ для этого.

Вернуться на верх