Model.objects.create等效执行full_clean?

时间:2014-02-21 15:54:48

标签: python django django-models django-orm

所以我有以下代码:

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='invalid').save()MyModel.objects.create(language='invalid')时,模型会毫无怨言地保存。是否有任何方便方法等同于Model.objects.create在保存之前执行full_clean的方法?

2 个答案:

答案 0 :(得分:1)

如果您使用的是模型表单,full_clean将作为表单验证步骤的一部分进行调用。

一般来说,没有一种方便的方法可以调用full_clean,但你可以编写自己的方法。

答案 1 :(得分:0)

Model.clean():此方法应用于提供自定义模型验证,并根据需要修改模型上的属性。例如,您可以使用它自动为字段提供值,或者进行需要访问多个字段的验证: