如何从渲染的选项中删除“------”? 我用我的模型形式:
widgets = {
'event_form': forms.CheckboxSelectMultiple(),
}
在模型中我有IntegerField选项:
EVENT_FORM_CHOICES = (
(1, _(u'aaaa')),
(2, _(u'bbbb')),
(3, _(cccc')),
(4, _(u'dddd')),
(5, _(eeee'))
)
渲染选择包含---------作为第一个可能的选择。我怎么能摆脱它?
编辑: 我发现的唯一工作方式是(在 init 方法中):
tmp_choices = self.fields['event_form'].choices
del tmp_choices[0]
self.fields['event_form'].choices = tmp_choices
但它不是很优雅的方式:)
答案 0 :(得分:3)
更新
类似的例子可能很有用:
country = ModelChoiceField(reference_class = Country, choices= country_choices,
required=True, empty_label=None, widget=forms.Select)
如果您想要解决方案客户端:
<script>
$("#selectBox option[value='-----']").remove();
</script>
答案 1 :(得分:1)
Django包含空白选项,因为该字段没有默认值。
如果在模型中设置默认值,则Django将不包括空白选项。
class MyModel(models.Model):
event_form = models.PositiveSmallIntegerField(choices=EVENT_FORM_CHOICES, default=1)
如果您不想在模型中设置默认值,则可以在模型表单中显式声明字段和选项,或者更改模型表单的__init__
方法中的选项。
答案 2 :(得分:0)
我遇到了类似的问题,但是这样修复了。首先,下载并安装https://pypi.python.org/pypi/django-multiselectfield。如果您不知道如何安装,请查看此处:django-multiselectfield can't install。然后,在models.py中:
from multiselectfield import MultiSelectField
CHOICES_FOR_ITEM_WITH_CHOICES = (
("choice 1", "choice 1"),
("choice 2", "choice 2"),
("choice 3", "choice 3"),
)
class MyModel(models.Model):
item_with_choices = MultiSelectField(max_length=MAX_LENGTH, null=True, blank=True)
在admin.py中:
from .forms import MyModelForm
class MyModelAdmin(admin.ModelAdmin):
form = MyModelForm
list_display = ('item_with_choices',)
list_filter = ('item_with_choices',)
search_fields = ('item_with_choices',)
admin.site.register(MyModel, MyModelAdmin)
在forms.py中(你可以随意命名):
from .models import MyModel
class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = (
'item_with_choices',
)
def clean(self):
# do something that validates your data
return self.cleaned_data
这会在这里建立答案:Django Model MultipleChoice