【发布时间】:2012-02-21 07:35:59
【问题描述】:
保存模型时,我有几个操作要执行,尤其是从管理员那里。我将几个字段大写并检查以确保一个字段或另一个字段已填写。我还创建了现场蛞蝓。现在,这些在覆盖 clean 和 save 函数之间是分开的。它现在有效,但我很好奇何时使用它们。我浏览了文档,但找不到具体何时使用。
【问题讨论】:
标签: python django django-models django-admin
保存模型时,我有几个操作要执行,尤其是从管理员那里。我将几个字段大写并检查以确保一个字段或另一个字段已填写。我还创建了现场蛞蝓。现在,这些在覆盖 clean 和 save 函数之间是分开的。它现在有效,但我很好奇何时使用它们。我浏览了文档,但找不到具体何时使用。
【问题讨论】:
标签: python django django-models django-admin
您应该使用 clean 来完成与验证相关的工作,并解析/更改/以其他方式清理输入。大写字段和生成 slug 可能会发生在这里。我还使用 clean 将 post_type 之类的字段强制为代理模型中的特定值。如果您在 clean 内提高 django.core.exceptions.ValidationError('error text'),则 'error text' 将添加到 form.non_field_errors。
保存是更改模型实际保存方式的地方。例如,我使用 save 来创建上传图片的裁剪。 ValidationErrors 在这里提出时不会被抓到,我觉得这是两者之间最重要的实际区别。
【讨论】:
ValidationError 被抛出:docs.djangoproject.com/en/dev/ref/models/instances/…