我正在开发一个django项目,并从批量上传表单创建许多模型实例。我正在创建许多未保存的模型实例,以便测试它们是否存在错误,因为我不想输入任何实例,直到用户提交了一整套有效记录以避免数据库中无意的重复。我的问题是,是否有充分的理由在未保存的模型实例上使用save(commit=False)
或full_clean
。我目前正在使用full_clean
,但不确定其中一个与另一个的差异/好处。
答案 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
不会执行模型验证。相反,它使您有机会在将对象保存到数据库之前更改对象。一个常见示例是将用户属性设置为当前登录的用户。