Django获取多个ID的对象

13 投票
1 回答
8762 浏览
提问于 2025-04-18 02:53

我有一组ID,想要获取这些ID对应的所有对象。现在我的方法可以实现这个功能,但它在一个循环里不停地对数据库发起很多次get查询,这样会对数据库造成很大的压力。

objects = [SomeModel.objects.get(id=id_) for id_ in id_set]

有没有更有效的方法来处理这个问题呢?

1 个回答

28

有一个叫做 __in 的字段查找方法(这里有相关文档),你可以用它来获取所有某个字段的值在一组值中的对象。

objects = SomeModel.objects.filter(id__in=id_set)

这个方法适用于很多不同类型的字段(比如字符字段 CharFields),不仅仅是 ID 字段。

撰写回答