django save(commit=False) versus full_clean



我正在一个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属性设置为当前登录的用户。

最新更新