Django REST Framework : Как сделать пользовательский валидатор для проверки комбинации нескольких полей одновременно?

I need to make a custom validator as below. But I can't find any way to retrieve the values of several fields, on which I need to check a condition.

class MyCustomValidator():
    def __call__(self, field_1, field_2):
        if condition_on_field_1_and_field_2 is True:
            message = 'my custom message'
            raise serializers.ValidationError(message)

Я видел в документации, что есть способ предоставить контекст валидатору. Но, похоже, он предоставляет только одно "serializer_field". Есть ли способ получить более одного поля сериализатора? Как бы вы это сделали?

https://www.django-rest-framework.org/api-guide/serializers/#object-level-validation

Для выполнения любой другой проверки, требующей доступа к нескольким полям, добавьте метод .validate() в свой подкласс Serializer. Этот метод принимает единственный аргумент, который является словарем значений полей. При необходимости он должен вызывать serializers.ValidationError или просто возвращать проверенные значения. Например:

from rest_framework import serializers

class EventSerializer(serializers.Serializer):
    description = serializers.CharField(max_length=100)
    start = serializers.DateTimeField()
    finish = serializers.DateTimeField()

    def validate(self, data):
        """
        Check that start is before finish.
        """
        if data['start'] > data['finish']:
            raise serializers.ValidationError("finish must occur after start")
        return data
Вернуться на верх