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模型类继承。