2016-05-10 11 views
2

リストに基づいて照会を行いたいと思っていました。私はこれを行うことができることを知っています:注文を保存しながらリストを照会する方法

lists = [Everton, Liverpool, Villa] 
queryset = Betting.objects.filter(matches__in=list) 

しかし、これは順番にテーブルを照会しません。操作はfuzzywuzzyに基づいて行うと、クエリが理解されるであろう、私はこのソリューションdjango-create-a-queryset-from-a-list-preserving-order.htmlを見てきましたが、sqllite

Thanks..Anyの助けを借りて作業するように見えるdoes notの

リストの順序で行われている重要ですしています

その後、
+0

ORMテーブルを[1]と残りはリストに表示される順序で残り –

+0

あなたはどのような正確な順序を指定できますか? –

+0

本当にクエリーセットが必要ですか?そうでない場合は、クエリの後にPythonソートすることができます。 –

答えて

0

ない効率の本当に確かに、それはあなたがすることができる理由は、あなたがしなければ、queryset.filter(いくつかの条件).filter(他のいくつかの条件)ということである

​​

方法することができ、結果両方のフィルタの労働組合が、そのためには、実際に

ある
1

このような何か試してみてください:リスト、[0]最初のリストのためのlist..ie..Itチェックの順に照会する

from django.db.models import Case, Value, When, IntegerField 

cases = [When(matches=x, then=Value(i)) for i,x in enumerate(lists)] 
case = Case(*cases, output_field=IntegerField()) 
queryset = Betting.objects.filter(matches__in=lists) 
queryset = queryset.annotate(my_order=case).order_by('my_order') 
+0

ありがとう..しかし、 'output_field = IntegerField()' –

+0

'from django.db.models import IntegerField'は、ケースチェックの出力を格納するものです – wim

関連する問題