首页 文章

Model和Admin中的Django字段验证?

提问于
浏览
10

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

1 回答

  • 9

    如果要验证单个字段,可以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 admin时运行两次 .

相关问题