2017-03-13 4 views
-1

すべて。 Querysetの結果にちょっとした問題がありました。シフトQuerysetの結果

menus = ShopMenu.objects.filter(shop=shop_id) 

彼は私のリターンの結果です:

1 --- 
2 --- 
3 --- 
4 --- 

しかし、それは私が必要なものは本当にありません。受け取りたい

4 ---- 
1 --- 
2 --- 
3 --- 

Haw私はその結果を得ることができますか?

+0

yeap。イリードドゥハット –

答えて

0

集計クエリで最後のIDを取得できます。その後、

from django.db.models import Max 
last_id = ShopMenu.objects.aggregate(last_id=Max('id'))['last_id'] 

、この分野でconditional expressionと順序を使用して、クエリに追加フィールドを追加します。

from django.db.models import Case, When, Value, BooleanField 
menus = ShopMenu.objects.annotate(
    show_before=Case(
     When(id=last_id, then=Value(True)), 
     default=Value(False), 
     output_field=BooleanField() 
    ) 
).order_by('show_before', 'id') 
関連する問題