有两个表,user
和phone
;手机具有链接到用户表的外键phone_user
。在序列化程序中设置深度后,我们可以从用户处获取电话信息。因此' Get'手机会返回手机的完整数据而非手机ID。
问题是如何创建与现有用户链接的新手机?此问题与创建嵌套对象相同。我试图用完整的用户数据发送json但是失败了。错误说" phone_user cannot be null
"。用户已在电话中明确添加,为什么它说用户为空?
现在请告诉我如何照顾这个。
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无法创建嵌套对象,你可以使用自定义的创建或设置read_only = True "。
答案 0 :(得分:1)
由于序列化程序的深度设置为1,因此需要仅使用用户的ID进行反序列化。所以,而不是
phone['phone_user']=user
你应该改为使用
phone['phone_user']=user['id']
这假设您返回的用户对象有一个id字段。