如何在保留订单的同时查询列表

时间:2016-05-10 18:14:21

标签: python django django-models django-orm

我想根据列表进行查询。我知道我可以这样做:

$(document).ready(function(){
   $(this).scrollTop(0);
});

但是,这并不按顺序查询表。我正在进行的操作基于fuzzywuzzy,并且按照列表的顺序进行查询至关重要

我见过这个解决方案django-create-a-queryset-from-a-list-preserving-order.html,但它似乎不适用于sqllite

谢谢。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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')

答案 1 :(得分:0)

不确定效率,但它可以是一种方式

lists = [Everton, Liverpool, Villa]
queryset = Betting.objects.all()
for i in lists:
    queryset = queryset.filter(matches=i)

你可以这样做的原因是,如果你这样做,queryset.filter(某些条件).filter(其他一些条件),那么结果实际上是两个过滤器的顺序联合