Django Overriding Model Clean()vs Save()

时间:2012-01-28 19:57:53

标签: python django django-models django-admin

我在保存模型时需要执行一些操作,尤其是来自管理员。我将一些字段大写并检查以确保填充一个字段或另一个字段。我也创造了领域slu ..现在,这些在覆盖清洁和保存功能之间分开。它现在有效,但我很好奇何时使用它们。我查看了文档,但我找不到具体使用的时间。

1 个答案:

答案 0 :(得分:34)

您应该使用clean来执行与验证相关的工作,并解析/更改/以其他方式清理输入。在这里可以发生资本化和产生slu ..我还使用clean将post_type之类的字段强制为代理模型中的特定值。如果您将django.core.exceptions.ValidationError('error text')内部提升为干净,'error text'会添加到form.non_field_errors

保存是更改模型实际保存方式的地方。例如,我使用save来创建上传图片的裁剪。如果在这里长大,ValidationError不会被抓住,我觉得这是两者之间最重要的实际区别。