gpt4 book ai didi

python - Django:通过多个 ID 过滤查询集

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:37 24 4
gpt4 key购买 nike

我的查询非常简单,我的 Django REST 应用程序中有一个模型 Vendor。我想要的是使用带有几个 ID 的获取响应,并取回具有这些 ID 的所有相应模型。 GET url 模式可能是这样的:r'^api/vendors?id=1,2,3'

我现在想的是使用 ListAPIView,并在 list 方法中使用 url 中的所有 id 过滤我的查询集。但我不确定如何实现这一点(使用 id 列表过滤查询集,我对 Python 和 Django 都很陌生),所以如果有人能就此提供任何建议,我将不胜感激。

最佳答案

(不幸的是我不知道 django REST,所以这里是一个纯 django 解决方案)

使用 ListAPIView,您可以访问 URL(或 GET)参数并修改查询集。

class MyVendorView(ListAPIView):
# attributes

def get_queryset(self):
id_string = self.request.GET.get('id')
if id_string is not None:
ids = [int(id) for id in id_string.split(',')]
return Vendor.objects.filter(id__in=ids)

else:
return Vendor.objects.all()

# other methods

请注意,我正在忽略任何属性或其他所需的属性

那么这里发生了什么?

  • 覆盖 get_queryset 将控制我们从点击 View 获得的结果

  • self.request.GET.get('id') 会像这样从 url 中提取 id 查询参数的值 localhost:8000/api/vendors? id=1,2,3 结果将是一个字符串“1,2,3”。

  • filter(id__in=ids) 让您说出选择在此 list ID 中具有值的东西

关于python - Django:通过多个 ID 过滤查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52168690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com