django FilteredSelectMultiple widget request.POST按顺序显示项目我添加了它们 - form.cleaned_data对它们进行排序

时间:2016-03-07 14:44:13

标签: django django-forms django-admin

没有更好的想法,可以从一个集合中挑选项目并指定你想要的顺序,我正在玩Django Admin的FilteredSelectMultiple小部件。

在我看来,当我收到表单提交时,我转储了request.POST和各种form.cleaned_data字段并发现了以下内容:

<QueryDict: {
    u'conditions': [u'2', u'1'], <-- this is the actual order I specified
   ...
}>
[<Condition: cond1>, <Condition: cond2>] <-- cleaned conditions
[07/Mar/2016 12:41:04] "POST /test_app/site/1/bulk_add_participants HTTP/1.1" 302 0

在response.POST的QueryDict中,条件的顺序是正确的:[2,1],但是当清理时,它们被排序为[1,2](我知道cond1的事实) .id = 1和cond2.id = 2),

我用于FilteredSelectMultiple的查询集按名称对它们进行排序,但我没想到clean_data会按这种方式排序。也许这就是正在发生的事情。

假设只要我知道form.valid()成功,只要QueryDict正确,我实际上并不需要清理的值。我需要的只是我选择的顺序中的ID。

当我点击提交时,是否有人知道request.POST中的商品的原始订单保证与右框中的商品的顺序相同?如果没有,是否有人知道Django小部件更适合我的需求?

顺便说一句,对于那些好奇的人,我正在制作批量创作表格。我需要允许用户为实验创建参与者1-1000,并且当我创建参与者时,我将按照他们指定的顺序对该实验条件的任何子集进行itertools.cycle(),将该条件排序映射到新创建的参与者。

0 个答案:

没有答案