【问题标题】:How to pass parameter to get_queryset in Django如何在Django中将参数传递给get_queryset
【发布时间】:2019-12-29 15:05:01
【问题描述】:

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

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

【问题讨论】:

  • 作为 URL 参数?获取参数? POST 参数?
  • 是的...仅在 GET 方法中

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


【解决方案1】:

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

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

会有用的

【讨论】:

    【解决方案2】:

    您可以使用self.request.GET [Django-doc] 访问GET 参数(在查询字符串 中)。

    例如,如果有一个参数?category=foo,您可以使用self.request.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)

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2020-09-06
      • 2012-04-10
      • 2014-07-08
      相关资源
      最近更新 更多