Django - CheckboxSelectMultiple 没有“------”选择

tun*_*rob 5 django django-forms django-widget

如何从呈现的选项中删除“------”?我在我的模型形式中使用:

widgets = {
    'event_form': forms.CheckboxSelectMultiple(),
}
Run Code Online (Sandbox Code Playgroud)

在模型中,我有 IntegerField 有选择:

EVENT_FORM_CHOICES = (
    (1, _(u'aaaa')),
    (2, _(u'bbbb')),
    (3, _(cccc')),
    (4, _(u'dddd')),
    (5, _(eeee'))
)
Run Code Online (Sandbox Code Playgroud)

呈现的选择包含 --------- 作为第一可能的选择。我怎样才能摆脱它?

编辑:我想出的唯一工作方法是(在init方法中):

tmp_choices = self.fields['event_form'].choices
del tmp_choices[0]
self.fields['event_form'].choices = tmp_choices
Run Code Online (Sandbox Code Playgroud)

但这不是很优雅的方式:)

Ala*_*air 1

Django 包含空白选项,因为该字段没有默认值。

如果您在模型中设置默认值,则 Django 将不会包含空白选项。

class MyModel(models.Model):
    event_form = models.PositiveSmallIntegerField(choices=EVENT_FORM_CHOICES, default=1)
Run Code Online (Sandbox Code Playgroud)

如果您不想在模型中设置默认值,则可以在模型表单中显式声明字段和选择,或更改模型表单方法中的选择__init__