我从两个模型查询:

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/

10-13 05:21