Django required field in model form Django required field in model form python python

Django required field in model form


If you don't want to modify blank setting for your fields inside models (doing so will break normal validation in admin site), you can do the following in your Form class:

def __init__(self, *args, **kwargs):    super(CircuitForm, self).__init__(*args, **kwargs)    for key in self.fields:        self.fields[key].required = False 

The redefined constructor won't harm any functionality.


If the model field has blank=True, then required is set to False on the form field. Otherwise, required=True

Says so here: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Looks like you are doing everything right.You could check the value of self.fields['end'].required.


Expanding on DataGreed's answer, I created a Mixin that allows you to specify a fields_required variable on the Meta class like this:

class MyForm(RequiredFieldsMixin, ModelForm):    class Meta:        model = MyModel        fields = ['field1', 'field2']        fields_required = ['field1']

Here it is:

class RequiredFieldsMixin():    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        fields_required = getattr(self.Meta, 'fields_required', None)        if fields_required:            for key in self.fields:                if key not in fields_required:                    self.fields[key].required = False