我得到了这样一个列表
a = [1, 2, 3, 4]
此列表与存储在我们称为 Books 的 django 模型中的 id 相匹配。
我正在尝试返回列表中带有 id 的 Books 查询集。我正在考虑使用 Q 对象并通过执行类似这样的操作来获取它们
Books.objects.filter(Q(id = 1) | Q(id=2) | Q(id=3) | Q(id=4))
现在我会像这样使用索引:
Books.objects.filter(Q(id = a[0]) | Q(id=a[1]) | Q(id=a[2]) | Q(id=a[3] ))
但是,这些列表的长度最多可达 30 个左右,并且对索引进行硬编码将不起作用,并且对查询进行硬编码也不能满足列表的不同长度。
是否可以走这条路?如果是这样,我怎样才能完成返回 ID 与列表匹配的书籍?
请您参考如下方法:
你应该使用 __in lookup [Django-doc]这里:
Books.objects.filter(<b>pk__in=a</b>)
正如文档所说:
In a given iterable; often a
list,tuple, orqueryset. It’s not a common use case, but strings (being iterables) are accepted.
