2013-12-12 48 views
3

我有Django的对象有一个选择字段Django的模型选择不涨价错误无效的选择

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 

在我的Django控制台

$> CustomFieldType.objects.create(name='custom_name',field_type='noError',company=mycompany) 
<CustomFieldType: custom_name> 
$> CustomFieldType.objects.get(name='custom_name').field_type 
u'noError' 

为什么Django是不会引发错误(ValidationError )?或者我错过了什么?

回答

4

choices选项仅用于预填表格下拉字段;它不执行任何验证:

如果给定,默认的表单控件将与 这些选择而不是标准的文本字段一个选择框。

+1

有什么办法可以强制验证吗? – user1631075

+1

@ user1631075数据库不应该验证任何内容。数据输入到数据库之前,所有验证都应该发生。如果你期望你的数据库进行验证,那么你的设计是畸形的。 – Diemuzi