繁体   English   中英

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

[英]How to pass parameter to get_queryset in Django

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

它在 get_queryset 中吗? 如果是,你能帮我吗!?

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

因此,例如,如果有一个参数?category=foo ,您可以使用self.request.GET['category']self.request.GET.get('category')访问 foo 如果您希望它返回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)

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

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

它会工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM