django save(commit = False)与full_clean

时间:2015-08-05 23:02:51

标签: python django

我正在开发一个django项目,并从批量上传表单创建许多模型实例。我正在创建许多未保存的模型实例,以便测试它们是否存在错误,因为我不想输入任何实例,直到用户提交了一整套有效记录以避免数据库中无意的重复。我的问题是,是否有充分的理由在未保存的模型实例上使用save(commit=False)full_clean。我目前正在使用full_clean,但不确定其中一个与另一个的差异/好处。

1 个答案:

答案 0 :(得分:2)

调用full_clean()是验证模型实例的正确方法。

from django.core.exceptions import ValidationError

try:
    obj.full_clean()
except ValidationError:
    # handle invalid object

在处理模型表单时,调用is_valid()将执行模型验证,因此您无需手动调用full_clean()

使用save()调用commit=False不会执行模型验证。相反,它使您有机会在将对象保存到数据库之前更改对象。一个常见示例是将用户属性设置为当前登录的用户。