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字段