如何在Django中将参数传递给get_queryset

时间:2019-08-24 18:43:23

标签: django django-rest-framework django-forms django-templates django-views

我有内置的Django API,并且有端点返回所有对象。我希望用户为我提供关键字以过滤此查询集。最好的方法是什么。以及如何做到这一点?

它在get_queryset中吗?如果可以,您能帮我吗?

2 个答案:

答案 0 :(得分:0)

您可以使用self.request.GET [Django-doc]访问GET参数(在 querystring 中)。

例如,如果有一个参数?category=foo,则可以使用self.request.GET['category']访问foo,如果希望它返回self.request.GET.get('category')以防丢失,可以使用None

因此,您可以使用以下方法进行过滤:

from rest_framework import generics
from app.models import SomeModel
from app.serializers import SomeSerializer

class UserList(generics.ListAPIView):
    model = SomeModel

    def get_queryset(self):
        qs = super().get_queryset()
        category = self.request.GET.get('category')
        if category is None:
            return qs
        return qs.filter(category=categry)

答案 1 :(得分:0)

只传递带有一些默认值的参数:

def get_queryset(self, some_thing=default):
        .
        .
        .

它会起作用