将所有自定义验证放入模型中有什么问题?

时间:2015-03-07 11:21:26

标签: python django django-models django-forms django-admin

Django的ModelForms很酷,但我无法理解为什么你想要在你的表单中放置数据完整性规则,当它们只能在模型本身时,https://stackoverflow.com/a/18876223/1207253,继续写下“默认情况下没有这样做,正如here所解释的那样,因为它会干扰某些功能......”

我已经阅读了引用的链接和https://github.com/danielgatis/django-smart-save,但仍然不明白为什么这不是推荐的方法。这种方法有什么特点干扰?排除的字段有效。默认值有效。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我能想到的唯一缺点是,如果通过管理员保存模型,full_cleanclean(在save中调用的那个)将被调用两次。不应该有任何副作用。

表单验证限制用户输入数据的方式,模型验证指定在将数据存储到数据库之前必须如何进一步处理/验证数据。因此,除非您的表单非常复杂,否则在模型中验证工作正常。

在整个项目中使用您最熟悉的并遵守它,因为这里没有强烈的约定。