Django model choice not raising error for an invalid choice
django, python
Solution
The `choices` option is only for pre-populating of form drop down fields; it does not enforce any validation:
If this is given, the default form widget will be a select box with these choices instead of the standard text field.
Problem
I have an object in Django with a choice field ``` class CustomFieldType(models.Model): STRING = 'STRING' DATE = 'DATE' BOOLEAN = 'BOOLEAN' NUMERIC = 'NUMERIC' EMAIL = 'EMAIL' TYPE_CHOICES = ( (STRING, _('String')), (DATE, _('Date')), (BOOLEAN, _('Boolean')), (NUMERIC, _('Numeric')), (EMAIL, _('Email')) ) name = models.CharField(max_length=256) field_type = models.CharField(choices=TYPE_CHOICES, default=STRING, max_length=10) company = models.ForeignKey('Company') class Meta: unique_together = ('name', 'company') def __unicode__(self): return self.name ``` In my django console ``` $> CustomFieldType.objects.create(name='custom_name',field_type='noError',company=mycompany) <CustomFieldType: custom_name> $> CustomFieldType.objects.get(name='custom_name').field_type u'noError' ``` Why django is not raising an error (ValidationError) ? Or Am I missing something ?