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

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

我想为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/

相关文章:

具有unique_together的Django多态模型

python - 在django中将两个字段相乘

django - Django Admin ManyToManyField

python - 更改用户时如何不显示密码?

mysql - Django admin - 模型对 super 用户可见,对员工用户不可见

python - Django 中的计划表更新

django - 列出 django 项目的应用程序

javascript - 选择 django 模板中的所有复选框

html - 当我扩展 base.html/for django 时,是否可以排除 base.html 中包含的 footer.html

python - 名称错误 django send_mail