Функция пользовательских валидаторов django?
У меня есть модель по имени X, у которой есть
STATUS_CHOICES = ( (STATUS_A, 'A'), (STATUS_B, 'B'), (STATUS_O, 'Other'), ) и имя поля status = models.CharField(max_length=48, choices=STATUS_CHOICES)
здесь я пытаюсь написать пользовательский валидатор для электронной таблицы, когда она загружается, чтобы проверить значение, которое должно возвращать только STATUS_CHOICES и любое другое значение должно возвращать ошибку, как я должен написать?
validators.py
from app.model import X
def validate_A_or_B(value):
return value in dict(X.STATUS_CHOICES).values()
правильно ли это?
Вы можете определить пользовательскую валидацию для поля следующим образом:
validators.py:
from your_view.models import X
from django.core.exceptions import ValidationError
def validate_status(value):
if value not in dict(X.STATUS_CHOICES).values():
raise ValidationError("your message")
return value
Вы можете использовать его в поле ваших моделей следующим образом: models.CharField(max_length=48, choices=STATUS_CHOICES, validators = [validate_status])
не забудьте включить from .validators import validate_status