django – 如何在ModelViewSet中使用自定义视图的参数

我想在我的ModelViewSet中使用@list_route装饰器创建一个自定义视图,该装饰器需要几个参数.我似乎无法找到这样的例子.

我想我希望我的功能看起来像:

@list_route()
def my_list(self, request, arg1, arg2, arg3):
    models = Model.objects.all().filter( """do some filtering with my args""" )
    serializer = ModelSerializer(models, many=True, context={'request': request})
    return Response(serializer.data)

同样,我不确定我应该在哪里或如何传递这些参数,或者我想做什么甚至是正确的,但这似乎是一个非常常见的用法.

听起来您希望使用查询参数来过滤您的查询集. Django REST Framework为过滤查询集 through the filtering backends提供了很多帮助.

filtering through the query parameters有一个特定的部分,听起来就像你正在使用的那样.它使用request.query_params,这是Django REST Framework添加的自定义方法,它收集传入的所有查询参数.

如果您正在寻找in-url过滤(/ api / users / search /:search for instance),那么您将需要修改为查询集生成的URL以提供这些额外参数. Django REST Framework不提供使用Router类的简单方法,但您可以在manually registering the urls with Django之前完成此操作.

相关文章
相关标签/搜索