2016-11-16 6 views
0

私は3つの条件のリストを持っているとしましょう:conditionA,conditionBconditionCです。dJangoの条件によるリスト

私はconditionA & conditionB & conditionCに一致する項目が最初に、その後、conditionA & conditionB、その後、conditionA & conditionCなどこれを行う方法があります表示されるように、私のクエリセットを並べ替えることができるようにしたいですか?

答えて

0

order_by()docs)あなたが引数を入れる順序を尊重する

EDIT

これは、何が必要な種類のファンキーであるが、このような何かをやってはあなたを与える必要があります。

このように並べ替えることができます:

funky_queryset = MyModel.objects.filter(name="john") 
funky_queryset |= MyModel.objects.filter(other_condition) 
... 

funky_querysetは、それ以上の項目を追加する順序になります。 |=演算子を使用すると、クエリーセットを結合できます。

もう一つの例:あなたはソートしたい、このクエリセットを持っているよう

はふり:

[<James Bond >, <Bart Simpson >, <John Jacob >, <John Stamos >, <Max Payne >] 

conditionBあなたはname="max"を持つようにしたいということです、のもconditionAあなたはname="john"を持つようにしたいということであるとしましょう、conditionCはあなたが他のすべてを望むということです。あなたはこのようにそれを行うことができます。

from django.db.models import Q 

sorted_queryset = MyModel.objects.filter(name="john") # conditionA 
sorted_queryset |= MyModel.object.filter(name="max") # conditionB 
sorted_queryset |= MyModel.objects.exclude(Q(name="john") | Q(name="max")) # conditionC 

結果は私の条件は `名= 'john'`ようなものであれば、それはうまくいく[<John Jacob>, <John Stamos>, <Max Payne>, <Bart Simpson>, <James Bond>]

+0

は、ありがとうございだろうか? –

+0

それには、おそらくフィルターを使用したいと思うでしょう。アルファベット順に名前を付けることができます。 – denvaar

+0

'name = john'のオブジェクトが最初に表示され、残りの部分が来るようにソートされたリストにする必要があります。\ –

関連する問題