【问题标题】:Django rest spectacular - Customizing get_queryset()Django rest 壮观 - 自定义 get_queryset()
【发布时间】:2022-07-30 18:53:35
【问题描述】:

我正在尝试使用 DRF-Spectacular 自定义 redoc 文档。

由于某种原因,extend_schema 类没有更新文档上的描述、摘要或标签。如何自定义?

@extend_schema(
        summary="Get All Classes",
        description='This endpoint will return all the classes created by your account.',
        tags=["Class"]
    )

def get_queryset(self):                                            
    return super().get_queryset().filter(taxonomy__is_public=True) | super().get_queryset().filter(taxonomy__client=Client.objects.get(user=self.request.user))

【问题讨论】:

  • 我无法与drf-spectacular 交谈,但这听起来不太对劲——你不会记录get_queryset(),因为它不是API 端点……它只是一种方法。 GET 端点(和其他端点)调用get_queryset() 将对象提供给 APIView(或视图集)
  • @你是对的。我刚刚添加了: def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) 同时保持 get_queryset 原样并且它有效。

标签: python django drf-spectacular


【解决方案1】:

参考评论。是的,注释 get_queryset 没有任何意义,因为它没有什么意义。但你不需要这样做

@extend_schema(...)
def get(self, request, *args, **kwargs): 
    return super().get(request, *args, **kwargs)

只是为了注释。 Spectacular 为此获得了另一个装饰器:

@extend_schema_view(
    get=extend_schema(description='get desc', responses=...),
    post=extend_schema(description='post desc', request=..., responses=...),
)
class YourView(APIView):
   ...

https://drf-spectacular.readthedocs.io/en/latest/drf_spectacular.html#drf_spectacular.utils.extend_schema_view

【讨论】:

    猜你喜欢
    • 2020-09-09
    • 2019-10-18
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多