Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模板的对象的有序列表_Python_Django_Orm - Fatal编程技术网

Python 模板的对象的有序列表

Python 模板的对象的有序列表,python,django,orm,Python,Django,Orm,试着点我的queryset。我知道有order\u by()但排序是由POST数据定义的,而不是数据库中的任何内容 sort----lookup-----display objects (darn, orderless) 1. Joe \ 2. Fred => {Fred, Joe, Marty} 3. Marty / 这是我到目前为止的视图代码 from operator import itemgetter #... # Sorted Tuple

试着点我的queryset。我知道有
order\u by()
但排序是由POST数据定义的,而不是数据库中的任何内容

sort----lookup-----display objects (darn, orderless)
1. Joe     \     
2. Fred     =>    {Fred, Joe, Marty} 
3. Marty   /
这是我到目前为止的视图代码

from operator import itemgetter
#...

# Sorted Tuples! Now what?? (this is not used)
i1 = sorted([(k,v) for k,v in request.POST.items() if k[:2] == 'i_'], key=itemgetter(1))
e1 = sorted([(k,v) for k,v in request.POST.items() if k[:2] == 'e_'], key=itemgetter(1))

# Unsorted lists to use in ORM :/
i = [int(v) for k,v in request.POST.items() if k[:2] == 'i_']
e = [int(v) for k,v in request.POST.items() if k[:2] == 'e_']

# It's an orderless QuerySet...
i_students = Student.objects.filter(pk__in=i)
e_students = Student.objects.filter(pk__in=e)
如果你有任何想法,让我知道:)我想在模板中这样做

<ol>
{% for s in i_students %}
     <li>{{ s }}</li>
{% endfor %}
</ol>

这回答了我的问题:

我从帖子里得到了这样的东西:

i_0 -> 3
i_1 -> 26
i_2 -> 12
我返回排序后的对象,如下所示:

i_tuples   = sorted([(k,v) for k,v in request.POST.items() if k[:2] == 'i_'], key=itemgetter(0))
i_pk_list  = [v for (k,v) in i_tuples]
clauses    = ' '.join(['WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(i_pk_list)])
ordering   = 'CASE %s END' % clauses
i_students = Student.objects.filter(pk__in=i_pk_list).extra(
           select={'ordering': ordering}, order_by=('ordering',))
这是相当混乱的,所以如果有人有更好的解决方案排序查询集,让我知道

i_tuples   = sorted([(k,v) for k,v in request.POST.items() if k[:2] == 'i_'], key=itemgetter(0))
i_pk_list  = [v for (k,v) in i_tuples]
clauses    = ' '.join(['WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(i_pk_list)])
ordering   = 'CASE %s END' % clauses
i_students = Student.objects.filter(pk__in=i_pk_list).extra(
           select={'ordering': ordering}, order_by=('ordering',))