首页 文章

将当前'User'指定为嵌套序列化程序的外键

提问于
浏览
0

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

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

我得到的是邮递员的这个输出 .

{
    "user_address": {
        "user": [
            "This field is required."
        ]
    }
}

我想知道一种方法将'User'传递给这两个模型创建 .

1 回答

  • 1

    您需要从 UserAddressSerializer 的字段中删除 user

    class UserAddressSerializer(serializers.ModelSerializer):
    
        class Meta:
            model = UserAddress
            fields = ('address_1', 'address_2', 'country',  # <-- Here
                      'state_province', 'city', 'zip_code')
    

相关问题