Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模型和管理中的Django字段验证?_Django_Django Models_Django Admin_Django Validation - Fatal编程技术网

模型和管理中的Django字段验证?

模型和管理中的Django字段验证?,django,django-models,django-admin,django-validation,Django,Django Models,Django Admin,Django Validation,我想为Django模型的特定字段定义自己的验证例程。 我希望在管理表单中显示错误消息,但如果实体由自己的python代码保存,我也希望进行相同的验证。 有没有一种方法可以在不破坏DRY原则的情况下执行此操作?如果要验证单个字段,可以将其添加到模型字段中 无论何时调用模型的方法,都将为该字段运行验证器。它将在验证模型表单时运行(包括在Django admin中),但在保存模型实例时不会自动运行-您必须在python代码中手动调用full\u clean m = MyModel(x=20) m.fu

我想为Django模型的特定字段定义自己的验证例程。 我希望在管理表单中显示错误消息,但如果实体由自己的python代码保存,我也希望进行相同的验证。
有没有一种方法可以在不破坏DRY原则的情况下执行此操作?

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

无论何时调用模型的方法,都将为该字段运行验证器。它将在验证模型表单时运行(包括在Django admin中),但在保存模型实例时不会自动运行-您必须在python代码中手动调用
full\u clean

m = MyModel(x=20)
m.full_clean() # may raise ValidationError
m.save()
如果希望在保存模型时强制验证程序运行,则可以覆盖save方法并在那里调用
full\u clean
。注意,当使用模型表单和django管理员时,这将导致验证运行两次