我已经为我的一些模型覆盖了 clean()
方法来构造约束以满足我的数据库架构要求(因为它需要运行时信息来进行这些验证)。
从现在开始,我已经完成了大部分后端组件(模型、信号、..),现在我正在尝试编写 ModelForm
s 用于我的模型。
我想知道的是,模型的 clean()
方法和表单端的 clean()
实现之间有什么关系吗?
如果是这样并且表单的 clean()
调用模型的 clean()
我将不必重写我的模型 - 端 clean()
实现并能够避免代码冗余。
最佳答案
是的,ModelForm
清理涉及模型清理。这就是 ModelForm
的想法:有很多有用的默认值,可以通过从模型自动构建表单对象来确定。
我通过个人经验发现了这种干净的链接,但为了支持它,我可以引用来源。
在 1.8 上,ModelForm
调用模型实例 full_clean
方法。在 1.7 上,它直接调用 clean
方法。
Form.full_clean()
def full_clean(self):
# ..... snip
self._clean_fields()
self._clean_form()
self._post_clean()
1.8 的 ModelForm._post_clean
模型 full_clean()
在其他验证中调用 clean()
:https://docs.djangoproject.com/en/1.8/ref/models/instances/
self.instance.full_clean(exclude=exclude, validate_unique=False)
1.7 的 ModelForm._post_clean
self.instance.clean()
关于python - 模型 clean() 方法和表单 clean() 方法之间有什么关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29908157/