栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Django视图中合并两个或多个查询集?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Django视图中合并两个或多个查询集?

将查询集连接到列表是最简单的方法。如果无论如何将对所有查询集命中数据库(例如,由于需要对结果进行排序),则不会增加成本。

from itertools import chainresult_list = list(chain(page_list, article_list, post_list))

使用

itertools.chain
itertools
在C中实现每个列表和一个元素一个一个地循环添加要快。与在串联之前将每个查询集转换为列表相比,它消耗的内存更少。

现在可以按日期对结果列表进行排序(按照hasen j对另一个答案的评论中的要求)。该sorted()函数方便地接受生成器并返回列表:

result_list = sorted(    chain(page_list, article_list, post_list),    key=lambda instance: instance.date_created)

如果你使用的是Python 2.4或更高版本,则可以使用

attrgetter
而不是lambda。我记得曾经读过关于它更快的文章,但是对于一百万个项目,我没有看到明显的速度差异。

from operator import attrgetterresult_list = sorted(    chain(page_list, article_list, post_list),    key=attrgetter('date_created'))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号