10

我想为 Django 模型的特定字段定义自己的验证例程。我希望在管理表单中显示错误消息,但如果实体由自己的 python 代码保存,我也希望进行相同的验证。有没有办法在不违反 DRY 原则的情况下做到这一点?

4

1 回答 1

9

如果要验证单个字段,可以编写验证器并将其添加到模型字段中。

full_clean每当调用模型的方法时,将为该字段运行验证器。它会在模型​​表单被验证时运行(包括在 Django 管理中),但它不会在模型实例被保存时自动运行——您必须full_clean在 python 代码中手动调用。

m = MyModel(x=20)
m.full_clean() # may raise ValidationError
m.save()

如果您想在保存模型时强制验证器运行,那么您可以覆盖 save 方法并full_clean在那里调用。请注意,当使用模型表单和 django 管理员时,这将导致验证运行两次。

于 2012-09-26T22:50:55.137 回答