ModelChoiceForm没有创建empty_label

时间:2016-12-31 08:07:03

标签: python django forms widget

我使用ModelChoiceSelect在django中创建了一个表单,我想在select小部件上放置一个empty_label,因此第一个选择不是所选的那个。这是我的forms.py:

from django import forms

from .models import Country, Embassy

class CountryListForm(forms.Form):
    countries = forms.ModelChoiceField(queryset=Country.objects.all().order_by('name'), empty_label="(Nothing)")

我从documentation了解到的,我只需要传递empty_label属性值来创建它。我已经做到了,但空洞的选择没有出现,我对这个表格做错了什么?

无论是empty_label

的任何分配,这都是我的小部件的样子

Widget

1 个答案:

答案 0 :(得分:0)

empty_label属性是可选的。默认情况下它是“--------”。选择此选项后,表单字段countries将返回的对象将为None。如果您想在字段中选择None,则可以通过empty_label设置其显示字符串。

countries = forms.ModelChoiceField(queryset=Country.objects.all().order_by('name'), empty_label="Any String You Want None Option")

如果您不想要None选项,请将empty_label设置为None。这将在queryset中显示第一个对象作为第一个选项。

countries = forms.ModelChoiceField(queryset=Country.objects.all().order_by('name'), empty_label=None)