0

使用 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”对象没有属性“用户”

有什么帮助吗?

4

2 回答 2

2

To serialize a queryset (or list of objects) you need to pass many=True

serializer = GroupMembersSerializer(queryset, many=True)

Otherwise it thinks you want to serialize a single GroupMember instance, which is why it tried to access the user attribute on it

于 2015-10-26T20:54:58.070 回答
1

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

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

  • 获取查询集
  • get_serializer_class
  • get_serializer
  • 获取对象

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

于 2015-10-26T21:06:48.417 回答