如何从Django QuerySet中获取倒数第二个项目?我尝试了以下代码:my_queryset[-2](在检查my_queryset长度大于1之后)。
if len(my_queryset)>1:
query = my_queryset[-2]
并且返回:
异常值:不支持负索引。
有没有“Django”的方法来获取这样的项?
我能想到的唯一一件事是反转查询集并获取 my_queryset[2]
但我不确定它的效率。
编辑:
scans = self.scans.all().order_by('datetime')
if len(scans)>1:
scan = scans[-2]
len(my_queryset)
会导致 Django 加载整个 queryset。对于较大的 queryset,这可能非常缓慢,因此您可以改用my_queryset.count()
。或者,根本不使用count()
或len()
,尝试获取scans[x]
,然后捕获可能的IndexError
。 - Alasdair