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

标签 python django django-queryset

我正在寻找一种方法来轻松地从模型对象集合中进行过滤,而无需每次都访问数据库。根据定义,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

关于python - Django 中对象集合的类查询集过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556269/

相关文章:

python - 属性错误 : Unknown property color_cycle

python - pandas 星期几轴标签

python - 如何将字符串更改为浮点列表和n维列表的 'n'?

django - 在 Django 中设置多对一的首选项目

python - Django Shell不尊重缓存配置

django,查询不同模型的好方法

javascript - 正在计算表达式 :- Javascript vs Python

django - UniqueConstraint 与 unique_together 之间的区别 - Django 2.2?

python - Django 内部连接查询集

Django查询: How to order posts by amount of upvotes?