我在保存模型时需要执行一些操作,尤其是来自管理员。我将一些字段大写并检查以确保填充一个字段或另一个字段。我也创造了领域slu ..现在,这些在覆盖清洁和保存功能之间分开。它现在有效,但我很好奇何时使用它们。我查看了文档,但我找不到具体使用的时间。
答案 0 :(得分:34)
您应该使用clean来执行与验证相关的工作,并解析/更改/以其他方式清理输入。在这里可以发生资本化和产生slu ..我还使用clean将post_type
之类的字段强制为代理模型中的特定值。如果您将django.core.exceptions.ValidationError('error text')
内部提升为干净,'error text'
会添加到form.non_field_errors
。
保存是更改模型实际保存方式的地方。例如,我使用save来创建上传图片的裁剪。如果在这里长大,ValidationError
不会被抓住,我觉得这是两者之间最重要的实际区别。