如何在 django 的 init 中将小部件添加到表单字段?
How do you add a widget to a form field in init in 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',
)
现在,如果您想添加一些已定义的选项,请按照 this link 了解更多详细信息。
The doc here也很好看
注意:您不必为此覆盖__init__
方法。
基本上,我想在 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',
)
现在,如果您想添加一些已定义的选项,请按照 this link 了解更多详细信息。
The doc here也很好看
注意:您不必为此覆盖__init__
方法。