DRF +嵌套路由器 - “QuerySet”对象没有属性'user'

时间:2015-10-26 20:52:31

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

使用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”对象就没有属性'user'出现

任何帮助?

2 个答案:

答案 0 :(得分:2)

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

serializer = GroupMembersSerializer(queryset, many=True)

否则它认为您要序列化单个GroupMember实例,这就是为什么它试图访问它上面的user属性

答案 1 :(得分:1)

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

我从过去了解到,drf-nested-routers会干扰底层视图集方法,这些方法可以对您的类进行分页和过滤:

  • get_queryset
  • get_serializer_class
  • get_serializer
  • 的get_object

在我看来,它对Viewset设计和功能的影响太大了。