首页 > 解决方案 > 如何 OR Django 模型字段验证器?

问题描述

有谁知道如何将 Django 模型字段验证器组合在一起?

像这样的东西:

example_field = models.CharField(max_length=255, validators=[validator1|validator2])

我猜有一种方法,它涉及 Q 运算符,但我找不到它到底是什么。

标签: djangovalidation

解决方案


您可以在函数本身中进行验证:

from django.core.exceptions import ValidationError
from django.db import models

def combined_validator(value):
    try:
        return validator1(value)
    except ValidationError:
        return validator2(value)

class MyModel(models.Model):
    example_field = models.CharField(
        max_length=255,
        validators=[combined_validator]
    )

如果validator1没有检测到任何故障,则返回控制流,这样我们就安全了。如果它引发了 a ValidationError,那么我们回退到validator2。如果这不会引发错误,那么我们又是安全的。否则,错误将由combined_validator.


推荐阅读