Skip to main content
 首页 » 编程设计

python之Django 中对象集合的类查询集过滤

2025年05月04日22mayingbao

我正在寻找一种方法来轻松地从模型对象集合中进行过滤,而无需每次都访问数据库。根据定义,QuerySet 是惰性的,并且总是会访问数据库。所以我想知道是否有任何现有的东西可以做到这一点。如果没有,也许它是一个很好的库来创建。

例如:

all_records = object_set(Record.objects.filter(company=user.company)) 

object_set 是一个假设函数,它将 QuerySet 中的所有对象收集为静态数据。结果将是一个“对象管理器”实例,它可以像 QuerySet 过滤器一样对其运行过滤器。这在基于多维数据列表中的数据存储创建、更新和删除对象时特别有用。

for row in data: 
  for col in row: 
    # this would not hit the DB. Only filter within the "object_set" in memory. 
    all_records.filter(date=col.date, type=col.type, creator=col.user) 

我意识到我可能试图以错误的方式解决这个问题,但无论如何,我认为这将是 Django 中的一个很好的工具。有谁知道 Django 中现有的库或功能可以解决这个问题?提前致谢!

请您参考如下方法:

我认为QuerySet的select_related方法就是你想要的:

https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related