我正试图让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不接受)。
作为一个附带说明,我知道事实是,调用这两个方法都是可能的,并且可以获得期望的结果(因为我尝试使用其他工具)。
非常感谢您的帮助!