Проверка состояния отношений в Django Rest Framework

Привет, я пытаюсь проверить, по крайней мере, одно из полей, обязательных для Django остальные рамки JSON.

Вот мой сериал класс

class WorkloadPutSerializer(serializers.Serializer):

    vdi = VdiSerializer(required = False)
    db = DbSerializer(required = False)
    vm= VmSerializer(required = False)
    pk = serializers.IntegerField(read_only=True)

Я хочу заставить пользователя ввести либо vdi или же vm или оба.

Есть ли способ проверить это условие в django rest Framework. Пожалуйста, помогите мне, я не могу найти в Django rest Framework Documentation .

1 ответ

Решение

Почему бы не переопределить validate() на сериализаторе? См. Проверка уровня объекта

class WorkloadPutSerializer(serializers.Serializer):

    vdi = VdiSerializer(required = False)
    db = DbSerializer(required = False)
    pk = serializers.IntegerField(read_only=True)

    def validate(self, data):
        """
        Check if at least one of data['vdi'] or data['vm']
        exists and then return the data. Otherwise raise 
        ValidationError. 
        """
        if data['vdi'] or data['vm']:
            return data
        else:
            raise serializers.ValidationError("No No No")
Другие вопросы по тегам