Rohan
Rohan

Reputation: 60

Relational condition check in Django Rest Framework

Hi I am trying to validate at least one of field is required in Django rest framework json .

Here is my serializer class

class WorkloadPutSerializer(serializers.Serializer):

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

I want to force user to enter either vdi or vm or both .

Is there any way to do validate this condition in django rest framework .Please help me out I am not able to find out in Django rest Framework Documentation .

Upvotes: 0

Views: 1466

Answers (1)

Sam R.
Sam R.

Reputation: 16450

Why not overriding validate() on serializer? See Object-level validation

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")

Upvotes: 1

Related Questions