2017-01-24 17 views
-1

日付が過去であるかどうかをチェックしたいときにアプリがあります。それが本当であれば、この項目をリストの最後に置いておきたい。ここで Trueの場合クエリーセットの項目をリストの末尾に入力します

は私のコードですが、それは動作していないと私は、エラーメッセージが表示されます。

'QuerySet' object has no attribute 'extend' 

マイコード:

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

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

答えて

2

QuerySetは、すべての共通のlist操作をサポートしていません。とにかく反復しながらコレクションを変更しないでください。なぜあなたは降順にdate_endQuerySetオーダーは行っていません:

queryset = queryset.order_by('-date_end') 

そうすれば、過去のすべてのアイテムが最後になります。

0

あなたはそれをこのように到達することができますスワップしないで最後まで移動したくない場合:

for index, item in enumerate(queryset): 
    if item.date_end < now(): 
     queryset.insert(len(queryset)-1, queryset.pop(index)) 
関連する問題