Django Overriding Model Clean()vs Save()

sau*_*ook 29 python django django-models django-admin

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

dok*_*ebi 35

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

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

  • 不是django.forms.ValidationError,而是django.core.exceptions.ValidationError (5认同)
  • 啊偷了我的键盘上的话.很好的答案.我要添加的唯一内容是指向文档的链接,其中有一个抛出`ValidationError`的好例子:https://docs.djangoproject.com/en/dev/ref/models/instances/#django .db.models.Model.clean (2认同)