Как ИЛИ Django модель поля валидаторов? - PullRequest
1 голос
/ 21 апреля 2020

Кто-нибудь знает, как ИЛИ вместе Django моделировать валидаторы поля?

Примерно так:

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

Я предполагаю, что есть способ, и он включает в себя оператор Q , но я не могу найти, что именно.

1 Ответ

3 голосов
/ 21 апреля 2020

Вы можете выполнить проверку в самой функции:

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 не обнаружит никаких проблем, то поток управления возвращается, и, таким образом, мы в безопасности. Если он поднимает ValidationError, то мы возвращаемся к validator2. Если это не вызывает ошибки, то мы снова в безопасности. В противном случае ошибка вырастет из combined_validator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...