Функция пользовательских валидаторов 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

Вернуться на верх