如何在Django Rest框架的通用API视图中访问url kwargs(更具体地讲ListCreateAPIView)?

时间:2018-06-26 12:24:18

标签: python django django-rest-framework

如何在django rest框架中的通用API视图(更具体地讲ListCreateAPIView)中访问url kwargs, 例如,如果我想重写通用APIView类中的get_queryset()方法,并且希望它使用从url kwargs中提取的值,我该怎么做?

4 个答案:

答案 0 :(得分:0)

您可以按以下方式访问

def get_queryset(self):
     data = self.kwargs.get("key-name")

答案 1 :(得分:0)

如果要使用get_queryset()方法,可以执行以下操作

def get_queryset(self):
    queryset = Model.objects.filter(parameter=self.kwargs['thing'])
    return queryset

答案 2 :(得分:0)

leelum1 aman kumar 的回答对我有很大帮助,因为我有同样的问题。我将添加一个有关如何使用他们的答案的特定示例。在下面的代码中,我尝试获取所有具有category属性的产品,它们是从URL传递到cat变量上的相同字符串。

class ListProductsView(generics.ListCreateAPIView):
    serializer_class = ProductSerializer
    def get_queryset(self):
        queryset = Product.objects.filter(category=self.kwargs['cat'])
        return queryset

这解决了我使用url中的变量过滤对象的问题。

答案 3 :(得分:0)

我花了很多时间来寻找这个问题的答案。终于在我写的旧代码中找到了。它就像一个魅力。

self.request.query_params.get('<name>')

我希望有人仍在寻求答案,这会对您有所帮助:)