试图覆盖视图中的get_queryset

2024-03-29 13:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

class OwnerList(generics.ListAPIView):

      serializer_class = OwnerDetailSerializer
      # queryset = Person.objects.filter(customuser__userrole__role__name='OWNER').distinct()

      permission_classes = [IsAuthenticated]

      filter_backends = [DjangoFilterBackend]

      def get_queryset(self):
           return super(OwnerList, self).get_queryset()

我有一个简单的观点,我正试图克服这个问题。 问题是,当使用此视图时,我得到:

return super(OwnerList, self).get_queryset()

File "C:\Users\kdalipaj\PycharmProjects\LTC SYSTEM\venv\lib\site-packages\rest_framework\generics.py", line 63, in get_queryset assert self.queryset is not None, (

AssertionError: 'OwnerList' should either include a queryset attribute, or override the get_queryset() method.

为什么会这样


Tags: selfgetreturnobjectsfilterclasspersonqueryset
1条回答
网友
1楼 · 发布于 2024-03-29 13:42:10

您的代码是:

return super(OwnerList, self).get_queryset()

它的意思是:“调用ListAPIView的方法get_queryset

ListAPIView本身没有get_queryset方法,但是GenericAPIView(它是ListAPIView的父级)有一个方法

让GenericAPIView的queryset做一件简单的事情:它抛出断言

所以,你不应该打电话

return super(OwnerList, self).get_queryset()

只需创建自己的queryset并从函数返回即可。例如:

return Owner.objects

另一种解决方案是在类级别设置queryset变量:

class OwnerList(generics.ListAPIView):
    ...
    queryset = Owner.objects
    ...

相关问题 更多 >