如何从Django模型的表格中取出倒数第二行?

问题描述 投票:0回答:3

我正在尝试从模型表的末尾获取第二行和第三行。 我知道如何获得最后一行。 但我需要 - (last - 1) 和 (last - 2) 行交替。

你怎样才能得到它们?

qs_select = Model.objects.all()

last_row = qs_select.last()
python django django-models django-queryset
3个回答
0
投票
qs_select = Model.objects.all()

last2_row = list(qs_select)[-2]

0
投票

Django QuerySets 几乎类似于 Python 列表,因此一些列表因此使用类似这样的东西来访问倒数第二条记录:-

qs_select = Model.objects.all()
second_last_row = qs_select[-2]

0
投票

不幸的是,django 不支持查询集的负索引,所以这行不通:

Model.objects.all()[-3:-1] # Will raise negative indexing error

另一种方法是将整个查询集转换为一个列表,并进行负索引,但这会将您的整个表加载到内存中:

list(Model.objects.all())[-3:-1] # Loads your whole table to memory :/ 

所以解决这个问题的一种方法是先对表进行排序,例如按主键降序排列,然后像这样获得第 2 行和第 3 行:

Model.objects.order_by("-pk")[1:3]

这将根据主键顺序从表的末尾获取第二行和第三行。

© www.soinside.com 2019 - 2024. All rights reserved.