我从两个模型查询:
fq = MyModel.objects.order_by('-added_time')
sq = MySecondModel.objects.order_by('-added_time')
例如,查询集为:
1_1, 1_2, 1_3
2_1, 2_2, 2_3
我想要:
1_1, 2_1, 1_2, 2_2, 1_3, 2_3
我试过的是:
all_res = list(fq) + list(sq)
但它给
1_1, 1_2, 1_3, 2_1, 2_2, 2_3
我应该怎么做才能达到我想要的?我正在使用
paginator
,所以结果也应该是一个查询集。编辑:
这就是我现在正在做的事情:
fq= MyModel.objects.order_by('-added_time')
sq = MySecondModel.objects.order_by('-added_time')
all_res = sorted(chain(fq, sq),key=attrgetter('-added_time'))
而且我有这种类型的分页,我在页面中设置左侧和右侧的距离。
我设置的左右距离如下:
min = all_res.number - 5
max = all_res.number + 5
这行给我错误:
'list' object has no attribute 'number'
因为all_res
是一个列表。 最佳答案
您是要对它们进行排序还是要对它们进行隔行扫描?如果是前者,
all_res = sorted(list(fq) + list(sq), key = lambda x: (x[-1], x[0]))
关于python - 在python中合并两个列表-但在合并过程中对它们进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22212930/