Python Django-如何在序列化程序中创建深度设置为的关系对象?

Python Django-如何在序列化程序中创建深度设置为的关系对象?,python,django,rest,Python,Django,Rest,有两个表,user和phone;手机外键phone\u user链接到用户表。通过在序列化程序中设置深度,我们可以从用户那里获取电话信息。因此,“Get”phone返回电话的完整数据,而不是电话id 问题是如何创建与现有用户链接的新手机?此问题与创建嵌套对象相同。我试图发送包含完整用户数据的json,但失败了。错误显示“电话\用户不能为空”。用户已显式添加到手机中,为什么它说用户为空 请让我现在如何处理这件事 class PhoneSerializer(serializers.ModelSeri

有两个表,
user
phone
;手机外键
phone\u user
链接到用户表。通过在序列化程序中设置深度,我们可以从用户那里获取电话信息。因此,“Get”phone返回电话的完整数据,而不是电话id

问题是如何创建与现有用户链接的新手机?此问题与创建嵌套对象相同。我试图发送包含完整用户数据的json,但失败了。错误显示“
电话\用户不能为空”
。用户已显式添加到手机中,为什么它说用户为空

请让我现在如何处理这件事

class PhoneSerializer(serializers.ModelSerializer):
    class Meta:
        model=Phone
        depth=1

class PhoneViewSet(viewsets.ModelViewSet):
    queryset=Phone.objects.all()
    serializer_class=PhoneSerializer

user=requests.get("http://127.0.0.1/users/1/")
phone=dict()
phone['phone_user']=user
json_str=json.dumps(phone)

// returns 500 error code
request.post("http://127.0.0.1/phones/", data=json_str, headers=...)

Django还说,“Django无法创建嵌套对象,您可以使用自定义的create或set read_only=True”。

由于序列化程序的深度设置为1,您需要仅使用用户ID进行反序列化。因此,与其

phone['phone\u user']=用户

你应该改用

phone['phone\u user']=用户['id']

不过,这是假设返回的用户对象有一个id字段