Skip to main content
 首页 » 编程设计

python之如何从值列表创建 Django 查询集

2025年05月04日33Renyi-Fan

我得到了这样一个列表

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, or queryset. It’s not a common use case, but strings (being iterables) are accepted.