【问题标题】:Django field validation in Model and in Admin?模型和管理员中的 Django 字段验证?
【发布时间】:2012-09-18 11:41:07
【问题描述】:

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

【问题讨论】:

    标签: django django-models django-admin django-validation


    【解决方案1】:

    如果您想验证单个字段,您可以write a validator 并将其添加到您的模型字段中。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-21
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2023-02-19
      • 2011-07-09
      • 2014-12-01
      • 2019-12-24
      相关资源
      最近更新 更多