How do I create a Django ModelForm, so that it's fields are sometimes required, sometimes not?

StackOverflow https://stackoverflow.com/questions/2948626

  •  05-10-2019
  •  | 
  •  

Question

Ok, here is the question. Imagine I have a ModelForm which have only two fields. like this one:

class ColorForm(forms.Form):
    color_by_name = forms.CharField()
    color = forms.IntegerField(widget = forms.Select(choices=COLOR_CHOICES))

So a user can either input a color name, a choose it from a list. Color is required, but that doesn't mean, that user should enter it manually. There do I put validation, so that my code checks if user selected color in dropdownlist and if not then he should write it manually?

Was it helpful?

Solution

Make them both required=False, but write a clean() method which checks for one or the other. See the validation documentation for an example.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top