Django模型形式中clean和full_clean函数之间的主要区别是什么?

时间:2018-07-22 17:31:15

标签: python django

Django模型中的clean和full_clean函数之间的主要区别是什么?

2 个答案:

答案 0 :(得分:1)

它们并不互相反对,通常你称之为 Model.full_clean() 能够触发 Model.clean() 进行服装验证 例如:

from django.core.exceptions import ValidationError
from django.db import models


class Brand(models.Model):
    title = models.CharField(max_length=512)

    def clean(self):
        if self.title.isdigit():
            raise ValidationError("title must be meaningful not only digits")

    def save(self, *args, **kwargs):
        self.full_clean()
        return super().save(*args, **kwargs)

答案 1 :(得分:0)

来自documentation

Model.full_clean( exclude = None,validate_unique = True

  

此方法调用Model.clean_fields()Model.clean()和   Model.validate_unique()(如果validate_uniqueTrue),按此顺序   并引发一个具有ValidationError属性的message_dict   包含所有三个阶段的错误。

Model.clean()

  

此方法应用于提供自定义模型验证,并用于   根据需要修改模型上的属性。

有关详细说明,请参阅文档的Validating objects部分。