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

Я создаю API для обновления некоторых полей моей модели, я хочу, чтобы поля были необязательными.
В то же время я не хочу принимать пустой запрос (запрос с пустым телом)

Я пробовал с "required = False", но это позволит пустые запросы.

class NotificationsSerializer(serializers.Serializer):
    notify_add_friend = serializers.BooleanField(required=False)
    notify_added_to_group = serializers.BooleanField(required=False)

Есть ли в любом случае определить валидатор для всего сериализатора или что-то?

1 Ответ

2 голосов
/ 19 мая 2019

Вы можете использовать проверка на уровне объекта :

для определенных полей:

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

для всего сериализатора:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...