【问题标题】:DRF + Nested-Routers - "QuerySet' object has no attribute 'user'DRF + Nested-Routers -“QuerySet”对象没有属性“用户”
【发布时间】:2015-10-26 20:52:31
【问题描述】:

使用 DRF 和 DRF 嵌套路由器

这是我的代码:

class MemberViewSet(viewsets.ViewSet):
    queryset = GroupMember.objects.all()
    serializer_class = GroupMembersSerializer


    def create(self, request, group_pk=None):
        queryset = self.queryset.all()
        serializer = GroupMembersSerializer(queryset)
        return Response(serializer.data)

但是一旦发布了新成员,就会出现错误“QuerySet”对象没有属性“用户”

有什么帮助吗?

【问题讨论】:

    标签: python django rest django-rest-framework drf-nested-routers


    【解决方案1】:

    要序列化查询集(或对象列表),您需要传递 many=True

    serializer = GroupMembersSerializer(queryset, many=True)
    

    否则它认为你想序列化单个GroupMember 实例,这就是它试图访问其上的user 属性的原因

    【讨论】:

      【解决方案2】:

      如果您的开发还不算太晚并且您可以选择,您可能需要查看https://github.com/chibisov/drf-extensions。它以非侵入式方式嵌套路由器 - 您不需要覆盖视图集的基本方法。

      我从过去了解到,drf-nested-routers 会干扰底层的视图集方法,这些方法可以在你的类上启用分页和过滤:

      • get_queryset
      • get_serializer_class
      • get_serializer
      • get_object

      在我看来,Viewset 的设计和功能对其提供的功能影响太大。

      【讨论】:

      • 谢谢,我去看看!
      猜你喜欢
      • 1970-01-01
      • 2018-03-11
      • 2011-12-14
      • 2015-11-24
      • 1970-01-01
      • 2020-11-15
      • 2014-04-07
      • 2018-10-29
      • 2020-10-31
      相关资源
      最近更新 更多