我的查询非常简单,我的Django REST应用程序中有一个模型Vendor
。我想要的是使用带有几个ID的get响应,并使用这些ID取回所有各个模型。 GET网址格式可能是这样的:r'^api/vendors?id=1,2,3'
。
我现在正在考虑使用ListAPIView
,并在list
方法中使用URL中的所有ID过滤我的查询集。但是我不确定究竟如何实现(用id列表过滤查询集,我对Python和Django都是陌生的),因此,如果有人可以提供任何建议,将不胜感激。
答案 0 :(得分:4)
(很遗憾,我不知道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
将控制我们从点击视图中获得的结果
self.request.GET.get('id')
将从URL中提取id查询参数的值,就像localhost:8000/api/vendors?id=1,2,3
这样,结果将是字符串“ 1,2,3”。
filter(id__in=ids)
允许您说选择在此列表 IDs