Django Rest Framework – 嵌套用户中的用户配置文件

Django Rest Framework – 嵌套用户中的用户配置文件,第1张

概述我正在使用 django的rest框架来显示有关用户的信息.每个用户都有一些保存在UserProfile中的联系人(用户配置文件使用一对一的关系来使用).可以在用户模型中直接访问联系人(user.contacts). 我想显示用户所有联系人的姓名(和URL).我写了以下序列化器: class ContactsUserSerializer(serializers.ModelSerializer): 我正在使用 django的rest框架来显示有关用户的信息.每个用户都有一些保存在UserProfile中的联系人(用户配置文件使用一对一的关系来使用).可以在用户模型中直接访问联系人(user.contacts).
我想显示用户所有联系人的姓名(和URL).我写了以下序列化器:

class ContactsUserSerializer(serializers.ModelSerializer):    class Meta:        model = get_user_model()        fIElds = ("username","email")class ContactsSerializer(serializers.ModelSerializer):    # user = ContactsUserSerializer(many=True) # raises TypeError: 'User' object is not iterable    class Meta:        model = UserProfile        fIElds = ("user",)class UserSerializer(serializers.HyperlinkedModelSerializer):    contacts = ContactsSerializer(many=True)    class Meta:        model = get_user_model()        fIElds = ("url","username","email","contacts")

哪个回归

{  "url": "http:\/\/localhost:8080\/users\/1\/","username": "test1","email": "","contacts": [    {      "user": 2    },{      "user": 1    }  ]}

但我希望它是:

{  "url": "http:\/\/localhost:8080\/users\/1\/","contacts": [    {      "url": "http://link_to_user","username": "foo"    },{      "url": "http://link_to_user","username": "bar"    }  ]}

我怎样才能做到这一点?我已经尝试为联系人用户添加另一个序列化程序但是引发了类型错误:“用户”对象不可迭代,JsON结构看起来有点尴尬:{contacts:[user:{“username”:… },]},如果他对Django的用户配置文件没有信心,可能会混淆API的用户.

解决方法 您的ContactsSerializer需要是HyperlikedModelSerializer才能自动添加url字段.由于您需要将url字段指向其他模型,因此实际上需要使用HyperlinkedRelatedFIEld并将其作为自定义字段添加到序列化程序中.

class ContactsSerializer(serializers.ModelSerializer):    url = serializers.HyperlinkedRelatedFIEld(vIEw_name="user-detail",source="user")    username = serializers.CharFIEld(source="user.username")    class Meta:        model = UserProfile        fIElds = ("url",)

您可以将source参数用于字段,以使用模型上的不同字段而不是显示的字段.在这种情况下,我们使用配置文件中用户关系的字段.

如果您使用路由器或遵循教程,则user-detail将是默认视图名称.您可能需要调整此项以匹配您的详细信息视图名称.

总结

以上是内存溢出为你收集整理的Django Rest Framework – 嵌套用户中的用户配置文件全部内容,希望文章能够帮你解决Django Rest Framework – 嵌套用户中的用户配置文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存