我想为Django模型的特定字段定义自己的验证例程。我希望错误消息显示在管理表单中,但我也希望发生相同的验证,如果实体是由自己的python代码保存的。有没有办法在不破坏DRY原则的情况下做到这一点?
发布于 2012-09-26 22:50:55
如果您想验证单个字段,可以使用write a validator将其添加到您的模型字段中。
无论何时调用模型的full_clean
方法,都将为该字段运行验证器。它将在验证模型表单时运行(包括在Django admin中),但不会在保存模型实例时自动运行-您必须在python代码中手动调用full_clean
。
m = MyModel(x=20)
m.full_clean() # may raise ValidationError
m.save()
如果您想在保存模型时强制运行验证器,那么可以覆盖保存方法并在那里调用full_clean
。请注意,当使用模型表单和django admin时,这将导致验证运行两次。
https://stackoverflow.com/questions/12608639
复制