create() argument after ** must be a mapping, not unicode

前端 未结 1 1232
小鲜肉
小鲜肉 2020-12-11 13:28

I\'m attempting to do a nested write using the following serializer -

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        mode         


        
相关标签:
1条回答
  • 2020-12-11 14:11

    For anyone doing a OneToOne mapping on a key this is the correct code -

    class UserProfileSerializer(serializers.ModelSerializer):
        class Meta:
            model = UserProfile
            fields = ('company', 'is_admin', 'last_modified', 'uuid')
    
    class UserSerializer(serializers.ModelSerializer):
        profile = UserProfileSerializer()
        class Meta:
            model = User
            fields = ('url', 'username', 'email', 'profile')
    
        def create(self, validated_data):
            profile_data = validated_data.pop('profile')
            user = User.objects.create(**validated_data)
            UserProfile.objects.create(user=user, **profile_data)
            return user
    

    Note that the following is removed for profile_data in profile_data:

    Reason being there isn't multiple values.

    0 讨论(0)
提交回复
热议问题