[Django]-ModelChoiceField , removing the blank choice

42๐Ÿ‘

โœ…

If you want to remove the blank choice for all ModelChoiceField you could do something like..

class Form(forms.ModelForm):
    class Meta:
        model = MyModel

    def __init__(self, *args, **kwargs):
        super(Form, self).__init__(*args, **kwargs)
        modelchoicefields = [field for field_name, field in self.fields.iteritems() if
            isinstance(field, forms.ModelChoiceField)]

        for field in modelchoicefield:
            field.empty_label = None

But that would replace all ModelChoiceFields, so maybe something more fine grained like:

for fieldname in ('field1','field2','field3','field4','field5','field6'):
    self.fields[fieldname].empty_label = None

Certainly easier than the __init__ overwrite you mentioned!

Update from Moritz

You can use 2017+ use:

forms.ModelChoiceField(... empty_label=None

Leave a comment