0
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()

我有这个简单的观点,我试图超越 get_queryset。问题是,当使用此视图时,我得到:

return super(OwnerList, self).get_queryset()

文件“C:\Users\kdalipaj\PycharmProjects\LTC SYSTEM\venv\lib\site-packages\rest_framework\generics.py”,第 63 行,在 get_queryset 中断言 self.queryset 不是 None,(

AssertionError: 'OwnerList' 应该包含一个queryset属性,或者覆盖该get_queryset()方法。

为什么会这样?

4

1 回答 1

0

你的代码是:

return super(OwnerList, self).get_queryset()

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

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

而 GenericAPIView 的 get_queryset 做简单的事情:它抛出断言。

所以,你不应该打电话

return super(OwnerList, self).get_queryset()

只需创建您自己的查询集并从函数中返回它。例如:

return Owner.objects

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

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

于 2020-10-09T00:07:09.843 回答