如何根据索引列表从Django QuerySet中筛选指定元素?
解决Django QuerySet按索引列表提取元素的问题
你可以通过以下两种方式实现需求:
直接用列表推导式提取:适合数据量较小的场景,直接遍历索引列表逐个获取元素
filteredUser = [allLocation[i] for i in UserIndex]注意:如果QuerySet还未被求值,每个索引访问都会触发一次数据库查询,数据量大时效率偏低。
先转列表再提取:先把QuerySet转为Python列表,再按索引获取,全程仅触发一次数据库查询,适合大数据量场景
allLocation_list = list(allLocation) filteredUser = [allLocation_list[i] for i in UserIndex]
验证结果示例:
>>> filteredUser [<loc: loc object (1)>, <loc: loc object (4)>, <loc: loc object (5)>]
内容的提问来源于stack exchange,提问作者moshiulRabbi
相关产品推荐
相关产品推荐

