我正在一个django项目上工作,并从批量上传表单创建了许多模型实例。我正在创建许多未保存的模型实例,以便测试它们是否存在错误,因为我不想在用户提交完整的有效记录集之前输入任何实例,以避免数据库中无意的重复。我的问题是,是否有充分的理由在未保存的模型实例上使用save(commit=False)
或full_clean
。我目前正在使用full_clean
,但不确定两者之间的差异/好处是什么。
调用full_clean()
是验证模型实例的正确方法。
from django.core.exceptions import ValidationError
try:
obj.full_clean()
except ValidationError:
# handle invalid object
在处理模型表单时,调用is_valid()
将执行模型验证,因此您不必手动调用full_clean()
。
用commit=False
调用save()
不会执行模型验证。相反,它让您有机会在将对象保存到数据库之前对其进行更改。一个常见的例子是将user属性设置为当前登录的用户。