Как сделать поле validate_data необязательным? - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать конечную точку API RESTful для создания нового пользователя.И это то, что я положил в свой serializer.py

class UserSerializer(serializers.ModelSerializer):
    Class Meta:
        model = User
        field = ('name', 'division', 'image',)
        extra_kwargs = {'division': {'required': False}}

    def create(self, validated_data):
        newUser = User.objects.create(
           name = validated_data['name'],
           division = validated_data['division']
           image = validated_data['image']
        )
        return newUser;

Теперь я хочу сделать следующее: я хочу, чтобы деление было необязательным, например, если входное деление - «Образование», тогда положим какобразование - это моя таблица базы данных;Но сделайте это пустым, если нет ввода.Как это реализовать?

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Чтобы сделать поле необязательным, вы можете использовать диктовку extra_kwargs.Чтобы это работало, поле должно быть явно объявлено в fields.

class FooSerializer(serializers.ModelSerializer):
    ...

    class Meta:
        ...
        fields = ('bar', 'baz',)
        extra_kwargs = {'bar': {'required': False}}

В общем, старайтесь не использовать fields = '__all__' и вместо этого явно объявляйте поля.Это защитит вас от случайного попадания на чувствительное поле.

0 голосов
/ 11 октября 2018

Вы можете попробовать это:

def create(self, validated_data):
    division = None
    if validated_data['division']:
        division = validated_data['division']
    newUser = User.objects.create(
        name = validated_data['name'],
        division = division
        image = validated_data['image']
    )
    return newUser;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...