繁体   English   中英

试图覆盖视图中的 get_queryset

[英]Trying to override a get_queryset in a view

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。 问题是,当使用此视图时,我得到:

返回 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: ' queryset ' 应该包含查询集属性,或者覆盖get_queryset()方法。

为什么会这样?

你的代码是:

return super(OwnerList, self).get_queryset()

这意味着:“调用 ListAPIView 的方法 get_queryset。

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

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

所以,你不应该打电话

return super(OwnerList, self).get_queryset()

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

return Owner.objects

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM