1
我查询两种型号:合并排序的查询集 - Django的
q1 = sorted(Model1.objects.filter(name__iexact=name), key = lambda p: p.sumjournals)
q2 = sorted(Model2.objects.filter(name__iexact=name), key = lambda p: p.sumbooks)
sumbooks, sumjournals
分别给出了所有的书籍和期刊的总和。
伪结果是:
q1 = [1, 3, 5, 8, 10]
q2 = [3, 6, 8, 11, 14]
我想:all = [1, 3, 3, 5, 6, 8, 8, 10, 11, 14 ]
。数字在这里是对象。
我试图
all = []
all.extend(y for y in (q1) if y)
all.extend(y for y in (q2) if y)
但问题是,我得到不同的结果排序每次我加载页面。为什么会发生这种情况,我如何实现我想要的?
感谢让我试试这个 – doniyor
,所以我更好地不这样做的拉姆达事情Q1和Q2,对不对?因为我后来在排序()? – doniyor
是的,很可能你不需要对'q1'和'q2'进行排序,我只是不确定itertools如何使用django查询集,因为它们是懒惰评估的(如果我没有错误的话)。无论如何,如果懒惰的评估导致itertools的任何麻烦,您总是可以通过'materialized_q1 = list(q1)'实现查询集。 – J0HN