[英]How to get penultimate item from QuerySet in Django?
如何從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]
此代碼會產生錯誤
scans = self.scans.all().order_by('datetime')
if len(scans)>1:
scan = scans[-2]
等於
scans = self.scans.all().order_by('-datetime')
if len(scans)>1:
scan = scans[1]
如果要獲取第二個索引,則要使用的索引是1
而不是2
因為在python中,偏移量從0
開始。
還要注意, django查詢集是懶惰的 ,這意味着只要適當的索引可用,您就可以改變主意而不會影響性能。
QuerySet是惰性的–創建QuerySet的操作不涉及任何數據庫活動。 您可以整天將過濾器堆疊在一起,並且Django在評估QuerySet之前不會真正運行查詢。 看一下這個例子:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.