我有内置的Django API,并且有端点返回所有对象。我希望用户为我提供关键字以过滤此查询集。最好的方法是什么。以及如何做到这一点?
它在get_queryset中吗?如果可以,您能帮我吗?
答案 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):
.
.
.
它会起作用