如果一个模型的字段是一个选项或外键,那么页面上的widget就是一个选择输入或radio,如果你指定的话。Django把“---------”作为一个未选择的值放在第一个项目中。我该如何覆盖它,什至删除它呢?我记得阅读过这样做的方法,但是再也找不到了。
xlpyo6sf1#
从Django forms doc:默认情况下,ModelChoiceField使用的<select>小部件在列表顶部有一个空选项,您可以使用empty_label属性更改此标签的文本(默认为"--------"),或者您可以通过设置empty_label=None完全禁用空标签:field2 = forms.ModelChoiceField(queryset=..., empty_label=None)如果您需要在ModelForm上执行此操作,我有一个答案here。
ModelChoiceField
<select>
empty_label
empty_label=None
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
ModelForm
y0u0uwnf2#
参见:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/如果模型字段设置了选项,则表单字段的小部件将设置为"选择",选项来自模型字段的选项。选项通常包括默认选中的空白选项。如果字段是必填字段,这将强制用户进行选择。如果模型字段具有blank = False和显式默认值,则不会包括空白选择(将改为初始选择默认值)。
mnowg1ta3#
如果是ModelForm,只需在模型中设置default=None,如下所示:
default=None
choose = models.CharField(max_length=3, choices=choose_dict, default=None)
3条答案
按热度按时间xlpyo6sf1#
从Django forms doc:
默认情况下,
ModelChoiceField
使用的<select>
小部件在列表顶部有一个空选项,您可以使用empty_label
属性更改此标签的文本(默认为"--------"),或者您可以通过设置empty_label=None
完全禁用空标签:field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
如果您需要在
ModelForm
上执行此操作,我有一个答案here。y0u0uwnf2#
参见:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
如果模型字段设置了选项,则表单字段的小部件将设置为"选择",选项来自模型字段的选项。选项通常包括默认选中的空白选项。如果字段是必填字段,这将强制用户进行选择。如果模型字段具有blank = False和显式默认值,则不会包括空白选择(将改为初始选择默认值)。
mnowg1ta3#
如果是ModelForm,只需在模型中设置
default=None
,如下所示: