Как проверить, что хотя бы одно из двух полей присутствует во время сериализации / десериализации - PullRequest
0 голосов
/ 11 марта 2019

Я использую Django Rest Framework и определяю свой класс Serializer.Входные данные, которые проверяет класс Serializer, содержат два поля, например, так:

"absolute_date_range":{
  "start":...,
  "end":...,
}

"relative_date_range"="last_7"

Пользователь может передать один или оба из них. Но должно присутствовать хотя бы одно из них.Если нет, то это должно привести к ошибке проверки.

Условие required=True работает только для одного поля.Если я делаю это, используя собственную логику, то это лучшее место для размещения этой логики - Сериализатор или в пользовательском поле или Проверка уровня поля ?

Какприменить это в моем сериализаторе?

1 Ответ

2 голосов
/ 11 марта 2019
class YourSerializer(serializers.Serializer)
    start = serializers.DateTimeField()
    finish = serializers.DateTimeField()

    def validate(self, data):
        """
        Validation of start and end date.
        """
        start_date = data['start']
        end_date = data['finish']
        if not start_date and not end_date:
            raise serializers.ValidationError("at least one date input required.")
        if other logic:
            other logic stuff
        return data

Это лучшее решение для вас

...