2017-01-24 16 views
-1

我有應用程序,當我想檢查日期是否過去。如果這是真的,我想把這個項目放在列表的最後。如果真是把查詢集的項目放在列表末尾

這裏是我的代碼,但它不工作,我得到錯誤信息:

'QuerySet' object has no attribute 'extend' 

我的代碼:

for i in queryset: 
     if i.date_end < now(): 
      queryset.extend(queryset.pop(queryset.index(i))) 

回答

2

A QuerySet不支持所有常見的list操作。無論如何你都不應該修改任何集合。你爲什麼不按降序排列由date_end訂購QuerySet

queryset = queryset.order_by('-date_end') 

這樣一來,過去的所有項目將在年底。

0

可以達到這樣說:

for index, item in enumerate(queryset): 
    if item.date_end < now(): 
     queryset[-1], queryset[index] = item, queryset[-1] 

如果你不想交換,只需將其移動到最後:

for index, item in enumerate(queryset): 
    if item.date_end < now(): 
     queryset.insert(len(queryset)-1, queryset.pop(index))