gpt4 book ai didi

python - 模型 clean() 方法和表单 clean() 方法之间有什么关系吗?

转载 作者:太空狗 更新时间:2023-10-30 03:00:18 33 4
gpt4 key购买 nike

我已经为我的一些模型覆盖了 clean() 方法来构造约束以满足我的数据库架构要求(因为它需要运行时信息来进行这些验证)。

从现在开始,我已经完成了大部分后端组件(模型信号、..),现在我正在尝试编写 ModelForms 用于我的模型。

我想知道的是,模型的 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com