Reputation: 433
I am creating an API to update some of my model's fields, I want the fields to be optional.
At the same time, I don't want to accept an empty request (a request with empty body)
I tried with "required=False" but this will allow empty requests.
class NotificationsSerializer(serializers.Serializer):
notify_add_friend = serializers.BooleanField(required=False)
notify_added_to_group = serializers.BooleanField(required=False)
Is there anyway to define a validator for the whole serializer or something?
Upvotes: 3
Views: 2832
Reputation: 3399
You can use object-level validation:
for specific fields:
class NotificationsSerializer(serializers.Serializer):
notify_add_friend = serializers.BooleanField(required=False)
notify_added_to_group = serializers.BooleanField(required=False)
def validate(self, data):
if 'notify_add_friend' not in data and 'notify_added_to_group' not in data:
raise serializers.ValidationError("Must include either notify_add_friend or notify_added_to_group")
return data
for whole serializer:
class NotificationsSerializer(serializers.Serializer):
notify_add_friend = serializers.BooleanField(required=False)
notify_added_to_group = serializers.BooleanField(required=False)
def validate(self, data):
if not data:
raise serializers.ValidationError("Must include at least one field")
return data
Upvotes: 7