我想为Django模型的特定字段定义自己的验证例程。
我希望将错误消息显示在admin表单中,但是如果该实体是由自己的python代码保存的,我还希望进行相同的验证。
有没有办法做到这一点而又不违反DRY原则?
最佳答案
如果要验证单个字段,则可以write a validator并将其添加到模型字段中。
每当调用模型的 full_clean
方法时,验证器都会为该字段运行。只要验证了模型形式(包括Django admin中的模型形式),它将运行,但是保存模型实例时,它将不会自动运行-您必须在python代码中手动调用full_clean
。
m = MyModel(x=20)
m.full_clean() # may raise ValidationError
m.save()
如果要在保存模型时强制验证器运行,则可以覆盖save方法并在其中调用
full_clean
。请注意,使用模型表单和django admin时,这会使验证运行两次。
关于模型和管理中的Django字段验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608639/