How to remove the unselected item in a select and radio input in Django
Question:
If a model’s field is a choice or foreign key, the widget on the page is a select input or radios if you specify that. Django places “———” in the first item as an unselected value. How can I override it or even remove it? I remember reading the way to do it but can’t find it any more.
Answers:
See : http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
If the model field has choices set,
then the form field’s widget will be
set to Select, with choices coming
from the model field’s choices. The
choices will normally include the
blank choice which is selected by
default. If the field is required,
this forces the user to make a
selection. The blank choice will not
be included if the model field has
blank=False and an explicit default
value (the default value will be
initially selected instead).
If it’s a ModelForm, just set default=None
in your model, like this:
choose = models.CharField(max_length=3, choices=choose_dict, default=None)
From the Django forms doc:
By default the <select>
widget used by ModelChoiceField
will have a an empty choice at the top of the list. You can change the text of this label (which is “———” by default) with the empty_label
attribute, or you can disable the empty label entirely by setting empty_label=None
:
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
If you need to do this on a ModelForm
, I had an answer here.
If a model’s field is a choice or foreign key, the widget on the page is a select input or radios if you specify that. Django places “———” in the first item as an unselected value. How can I override it or even remove it? I remember reading the way to do it but can’t find it any more.
See : http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
If the model field has choices set,
then the form field’s widget will be
set to Select, with choices coming
from the model field’s choices. The
choices will normally include the
blank choice which is selected by
default. If the field is required,
this forces the user to make a
selection. The blank choice will not
be included if the model field has
blank=False and an explicit default
value (the default value will be
initially selected instead).
If it’s a ModelForm, just set default=None
in your model, like this:
choose = models.CharField(max_length=3, choices=choose_dict, default=None)
From the Django forms doc:
By default the
<select>
widget used byModelChoiceField
will have a an empty choice at the top of the list. You can change the text of this label (which is “———” by default) with theempty_label
attribute, or you can disable the empty label entirely by settingempty_label=None
:
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
If you need to do this on a ModelForm
, I had an answer here.