Python Django中对象集合的类Queryset过滤
我正在寻找一种方法,可以轻松地从模型对象集合中筛选,而不必每次都访问数据库。根据定义,查询集是惰性的,并且总是会命中数据库。所以我想知道是否有什么东西可以做到这一点。如果不是,也许这是一个很好的库来创建 例如:Python Django中对象集合的类Queryset过滤,python,django,django-queryset,Python,Django,Django Queryset,我正在寻找一种方法,可以轻松地从模型对象集合中筛选,而不必每次都访问数据库。根据定义,查询集是惰性的,并且总是会命中数据库。所以我想知道是否有什么东西可以做到这一点。如果不是,也许这是一个很好的库来创建 例如: all_records = object_set(Record.objects.filter(company=user.company)) object\u集是一个假设函数,将查询集中的所有对象作为静态数据收集。结果将是一个“对象管理器”实例,该实例可以运行类似于QuerySet过滤器
all_records = object_set(Record.objects.filter(company=user.company))
object\u集
是一个假设函数,将查询集中的所有对象作为静态数据收集。结果将是一个“对象管理器”实例,该实例可以运行类似于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_相关方法正是您想要的:
请查看以下项目中的managers.py: 它应该向您展示他是如何实现queryset的
def get_query_set(self):
qs = super(QueryManager, self).get_query_set().filter(self._q)
if self._order_by is not None:
return qs.order_by(*self._order_by)
return qs
如果这个问题的动机是长数据集,那么在Django项目中使用Redis缓存
差不多,但结果仍然是一个qs,它会在每个筛选器或get调用中命中db。