Django 模型中 clean 和 full_clean 函数的主要区别是什么?
他们并不互相反对。通常您调用 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)
以下是验证模型涉及的三个步骤:
验证模型字段 -
Model.clean_fields()
验证整个模型 -
Model.clean()
验证字段唯一性 -
Model.validate_unique()
当您调用模型的
full_clean()
方法时,将执行所有三个步骤。了解更多信息点击这里