Как передать проверенные данные другому классу пользовательского валидатора в DRF?
У меня есть такой serializer.py
class PostSerializer(serializers.ModelSerializer):
title = serializers.CharField(validators=[TitleValidator()])
slug = serializers.CharField(validators=[SlugsValidator()], max_length=100, required=False)
и у меня есть два класса валидаторов для этих полей
class TitleValidator:
MIN_TITLE_LENGTH = 20
def __call__(self, title: str):
if len(title) < self.MIN_TITLE_LENGTH:
raise ValidationError(f"Min title length is {self.MIN_TITLE_LENGTH}")
return title
class SlugsValidator:
def __call__(self, slug):
# Get title here
return slug
Как передать проверенный заголовок в класс SlugValidator
?
Я пытался передать данные непосредственно в экземпляр TitleValidator
, но единственное, что я могу получить, это само поле, а не фактическое значение.
Другой способ - передать данные в метод validate(), но похоже, что сначала выполняются валидаторы пользовательского класса, и я получаю ошибку, что аргумент title не предоставлен.
Есть ли способ, которым я могу этого добиться?
Кажется, что можно получить все поля, если определить все валидаторы класса внутри Meta
класса, но мне интересно, возможно ли это без использования Meta
класса