Django 为未强制执行的模型字段定义的选项?

Django 为未强制执行的模型字段定义的选项?,django,django-models,django-orm,Django,Django Models,Django Orm,因此,我将一些字段定义为选项: class MyModel(models.Model): # Text language. ENGLISH = 'eng'

因此,我将一些字段定义为选项:

class MyModel(models.Model):
    # Text language.                                                                                 
    ENGLISH = 'eng'                                                                                   
    FRENCH  = 'fr'                                                                                   

    LANGUAGES_CHOICES = [                                                                            
        (ENGLISH, 'English'),                                                                        
        (FRENCH, 'French'),                                                                          
    ]                                                                                                

    language = models.CharField(                                                                     
            max_length=max(len(language) for language in LANGUAGES_CHOICES),                         
            choices=LANGUAGES_CHOICES,                                                               
            blank=False,                                                                             
            null=True)

但是,我可以做
MyModel(language='hur').save()
,没有任何错误或投诉。我遗漏了什么?

Django在验证modelform时验证模型,或者如果显式调用modelinst.full\u clean()调用modelinst.save()不进行验证

执行
python manage.py dbshell
desc appname\u mymodel
并查看length属性设置为什么。查看您的代码,
max_length=2
,但显然不是这样。另一件事-尝试
MyModel.objects.create(language='hurhur')
您将获得error@karthikr我喜欢它。回答这个问题,我会接受的。除了覆盖
save
方法之外,是否有任何方法可以在每次保存时启用调用
full\u clean()
。我认为最简单的方法是创建一个基类,所有模型都从该基类派生,覆盖保存,并让该基类从django模型类继承。