为什么序列化字段不可选?

时间:2015-11-11 12:07:10

标签: json django-rest-framework serializer

如果我有一个模型序列化程序,其中db模型中不需要first_name和last_name(空白= True,null = True,默认=无),我选择提交可能包含或不包含“json”的json数据first_name“或”last_name“字段,不应该在validated_data []中存在这些字段,无论它们是否未通过json请求提交,因为它们列在序列化程序字段中并且其默认值设置为None?

如果我在json POST请求中未提交“first_name”或“last_name”,则会出现密钥错误。

class UserCreateSerializer(serializers.ModelSerializer):

    class Meta:
        model = get_user_model()
        fields = ('id', 'email', 'first_name', 'last_name')
        read_only_fields = ('id',)

    def create(self, validated_data):
        user = get_user_model().objects.create(
            email=validated_data['email'],
            first_name=validated_data['first_name'],
            last_name=validated_data['last_name']
        )

        user.save()
        return user

1 个答案:

答案 0 :(得分:0)

In your create method do like:

def create(self, validated_data):
    user = get_user_model().objects.create(
        email=validated_data['email'],
        first_name=validated_data.get('first_name',''),
        last_name=validated_data.get('last_name','')
    )

    user.save()
    return user