2013-12-12 49 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