繁体   English   中英

Django rest 框架,应该能够覆盖 get_queryset 而不是定义 queryset 属性吗?

[英]Django rest framework, should be able to override get_queryset and not define queryset attribute?

我很迷惑。 查看 ViewSet 源代码,看起来我应该无法在视图集中定义查询集,然后只需覆盖 get queryset 函数即可获取我想要的任何查询集。 但我的代码失败并出现此错误:

AssertionError: `base_name` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.

因此,即使我覆盖了 queryset 属性,我仍然需要在开始时将其设置为某个假属性……这是可行的,但是定义查询集然后在一秒钟后覆盖它感觉很奇怪。

class StudyQuestion(viewsets.ReadOnlyModelViewSet):
    queryset = Model.objects.all()
    serializer_class = ModelSerializer
    permission_classes = (permissions.IsAuthenticated, )

    def get_queryset(self):
        """"""
        return Model.objects.order_by('-word__frequency')

一个DRF ModelViewSet使用queryset导出URL基地。 如果未设置queryset属性,DRF 会要求您在注册路由器时使用可选的base_name属性来声明基。

在 DRF 文档中查看此页面:

http://www.django-rest-framework.org/api-guide/routers/

DRF 路由器正在抱怨,因为它无法自动为视图集生成基本名称

base_name - 用于创建的 URL 名称的基础。 如果未设置 basename 将根据视图集的 queryset 属性自动生成,如果它有的话。 请注意,如果视图集不包含查询集属性,那么您必须在注册视图集时设置 base_name。

暂无
暂无

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

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