【问题标题】:Filter ModelViewSet with Url Param使用 Url 参数过滤 ModelViewSet
【发布时间】:2021-01-12 23:49:35
【问题描述】:

我想通过提供 URL 参数来过滤我的 ModelViewSet。所以,例如:

class WidgetViewSet(ModelViewSet):

    queryset = Widget.objects.all()
    serializer_class = WidgetSerializer

    def get_queryset(self):
        return Widget.objects.filter(id=id) # id would be a url param

假设我 ping /widgets/43。这将使用id=43 过滤Widgets。我该怎么做?

【问题讨论】:

    标签: django-rest-framework


    【解决方案1】:

    首先,在 URL /widgets/43 中,43 不是 URL 参数,而是 URL 路径的一部分。 modelviewset 已经实现了以这种方式获取特定对象。因此,删除您的 get_queryset() 方法并尝试它,您将看到它默认工作。记下尾部的斜杠,如果路由器需要,请添加它。 我会建议在文档上阅读更多关于 DRF Viewsets 的信息。

    然而,一个 URL 参数是这种类型的 /widgets?id=43。在这里,id 是一个 URL 参数,您可以通过以下方式在视图集中检索它: self.kwargs['id'] 如果你想要更多的参数和更复杂的过滤,可以考虑使用django-filter's integration with DRF

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 2023-03-04
      • 2015-10-25
      • 2021-03-30
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      相关资源
      最近更新 更多