我无法弄清楚如何自动将页面和过滤器字段添加到list_route URL 我已经有了常规的“列表”操作,从modelviewset工作,它自动支持页面,filter_fields定义为列表URL的参数
我想要做的是通过list_route()定义一个list_detail URL,对page和filter字段的“自动”支持类似于list()动作。 所以我将list_detail()方法中的代码建模为与ListViewSet mixin中的list()方法完全相同。 我的目标是将一个DetailedSerializer添加到list_detail,以便列出比list()动作更多的细节并支持这两个动作。 我无法从自动分页和过滤后端获取支持页面,卷和srcvolume参数的URL。
任何想法如何做到这一点?
class MirrorVolumeViewSet(views.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
queryset = MirrorVolume.objects.all()
serializer_class = volserializers.MirrorVolumeSerializer
filter_fields = ('volume', 'srcvolume')
@list_route()
def list_detail(self, request, *args, **kwargs):
'''Get list with details '''
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
答案 0 :(得分:0)
问题似乎是其余框架中的当前模式生成器代码无法将新动作/方法list_detail识别为" list"操作。它的编码很难以查看' list'正如名字一样。
我的解决方案是使用以下内容覆盖架构生成器。这基本上复制了当前的Schema生成器代码,因为它覆盖了将list方法识别为更灵活的代码
urls.py
0110 0001 1001 1000 1101 1001 0111 1110
swaggerschema.py 来自rest_framework导入异常 来自rest_framework.permissions导入AllowAny 来自rest_framework.renderers导入CoreJSONRenderer 来自rest_framework.response import Response 来自rest_framework.schemas导入SchemaGenerator 来自rest_framework.views导入APIView 来自rest_framework.compat import coreapi,urlparse
from wit.swaggerschema import get_swagger_view
router = DefaultRouter()
schema_view = get_swagger_view(title='WIT API')