Empty Label ChoiceField Django Empty Label ChoiceField Django django django

Empty Label ChoiceField Django


See the Django 1.11 documentation on ChoiceField. The 'empty value' for the ChoiceField is defined as the empty string '', so your list of tuples should contain a key of '' mapped to whatever value you want to show for the empty value.

### forms.pyfrom django.forms import Form, ChoiceFieldCHOICE_LIST = [    ('', '----'), # replace the value '----' with whatever you want, it won't matter    (1, 'Rock'),    (2, 'Hard Place')]class SomeForm (Form):    some_choice = ChoiceField(choices=CHOICE_LIST, required=False)

Note, you can avoid a form error if you want the form field to be optional by using required=False

Also, if you already have a CHOICE_LIST without an empty value, you can insert one so it shows up first in the form drop-down menu:

CHOICE_LIST.insert(0, ('', '----'))


Here's the solution that I used:

from myapp.models import COLORSCOLORS_EMPTY = [('','---------')] + COLORSclass ColorBrowseForm(forms.Form):    color = forms.ChoiceField(choices=COLORS_EMPTY, required=False, widget=forms.Select(attrs={'onchange': 'this.form.submit();'}))


You can try this (assuming your choices are tuples):

blank_choice = (('', '---------'),)...color = forms.ChoiceField(choices=blank_choice + COLORS)year = forms.ChoiceField(choices=blank_choice + YEAR_CHOICES)

Also, I can't tell from your code whether this is a form or a ModelForm, but it it's the latter, no need to redefine the form field here (you can include the choices=COLORS and choices=YEAR_CHOICES directly in the model field.

Hope this helps.