将当前的“用户”作为外键分配给嵌套的序列化程序

我正在尝试使用嵌套序列化程序将当前的“用户”分配给两个模型。


class UserAddressSerializer(serializers.ModelSerializer):


    class Meta:

        model = UserAddress

        fields = ('user', 'address_1', 'address_2', 'country',

                  'state_province', 'city', 'zip_code')



class UserProfileSerializer(serializers.ModelSerializer):

    user_address = UserAddressSerializer()

    user = serializers.HiddenField(default=serializers.CurrentUserDefault())


    class Meta:

        model = UserProfile

        fields = ('user', 'first_name', 'middle_name', 'last_name',

                  'title', 'display_name', 'time_zone', 'user_address', 'default_office')


    def create(self, validated_data):

        user = validated_data.pop('user')

        user_address_data = validated_data.pop('user_address')

        user_address_object = UserAddress.objects.create(

            user=user, **user_address_data)

        user_profile_object = UserProfile.objects.create(

            user=user, **validated_data)


        return user

我得到的是 Postman 中的这个输出。


{

    "user_address": {

        "user": [

            "This field is required."

        ]

    }

}

我想知道一种将“用户”传递给这两个模型创建的方法。


翻过高山走不出你
浏览 120回答 1
1回答

桃花长相依

您需要user从以下字段中删除UserAddressSerializer:class UserAddressSerializer(serializers.ModelSerializer):&nbsp; &nbsp; class Meta:&nbsp; &nbsp; &nbsp; &nbsp; model = UserAddress&nbsp; &nbsp; &nbsp; &nbsp; fields = ('address_1', 'address_2', 'country',&nbsp; # <-- Here&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'state_province', 'city', 'zip_code')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python