URL GET参数仅针对Swagger-DRF的“列表”显示

时间:2019-04-05 08:44:52

标签: django get django-rest-framework swagger url-parameters

我正试图让Swagger显示特定端点的URL GET参数。
这些参数应该对我的ModelViewSet上的所有GET操作都可用,但是我只能为list操作显示它们,而不能为retrieve操作显示它们。
我的处理方式如下:

class SomeFilter(BaseFilterBackend):
    def get_schema_fields(self, view):
        print(view.action)
        if view.action in ['list', 'retrieve']:
            return [
                coreapi.Field(
                    name='my-name',
                    location='query',
                    required=False,
                    schema=coreschema.Boolean(),
                    description="Include(true)/Exclude(false) some query fields"
                )
            ]
        else:
            return []


class SomeMixin:
    filter_backends = (SomeFilter,)

    def filter_queryset(self, queryset):
        return queryset

    ...  # Some other irrelevant stuff...

我再次成功获取list动作参数来显示(并工作),但没有获取到该参数。 我要呼叫的URL是(供参考):

http://my-api/objects/?my-name=[true, false](有效)

http://my-api/objects/{id}/?my-name=[true, false](Swagger不接受)。

作为一个附带说明,我知道事实是,调用这两个方法都是可能的,并且可以获得期望的结果(因为我尝试使用其他工具)。

非常感谢您的帮助!

0 个答案:

没有答案