快速概要:如何确保request.POST中值的正确顺序?我正在使用一个HTML表(使用DataTables来增加隐藏列等,唯一的影响是隐藏的列不包含在'提交'的调用中)并且每行渲染一个变形窗体。零售呈现的变形表单(使用表单属性) - 日期处理不可靠
作为变形does not directly support split forms using the form attribute我手动将form=my_desired_unique_id
插入所有相关元素。这对于<input>
和<textarea>
这些简单元素很有效,值在request.POST.items()
中显示并验证正确。
对于变形日期选择器来说,事情有点复杂。 form['datecolumn'].serialize
会产生这样的事情: -
<input type="hidden" name="__start__" value="datecolumn:mapping"/>
<input type="date"
name="date"
value="2017-01-01"
id="deformField6" class=" form-control hasDatepicker"/>
<input type="hidden" name="__end__" value="datecolumn:mapping"/>
<script type="text/javascript">
deform.addCallback(
'deformField6',
function deform_cb(oid) {
if (!Modernizr.inputtypes['date'] ||"date" != "date" || window.forceDateTimePolyfill){
$('#' + oid).pickadate({"format": "yyyy-mm-dd", "selectMonths": true, "selectYears": true, "formatSubmit": "yyyy-mm-dd"});
}
}
);
</script>
有3个输入有(和第四隐藏一个获取名为“date_submit”渲染HTML添加)。当用户选择一个新的日期时,可见输入的值不会改变,但是新的隐藏的输入的值会改变。在提交时,不知何故该值被传递给主'日期'输入(有些js我没有处理)。
产生的request.POST.items()
包含从数据输入这三个要素: -
('__start__', 'datecolumn:mapping')
('date', '2017-02-24')
(这是新选择的日期)('__end__', 'datecolumn:mapping')
我的问题在这里这些值的顺序是不可靠的。在同一页面和表单上,单击多次提交将导致request.POST.items()
(所有值,而不仅仅是与日期有关的值)的不同顺序值。如果结果顺序如上所述,事情工作正常,但如果顺序不同(比如说结束是在开始之前,或者日期在两者之前或之后),那么我会得到一个ValueError引发或验证失败。
我可能通过request.POST.items()
第一迭代,并确保正确的安排,但我想在此形成两个日期选择器,我也没有办法知道哪些date
领域属于哪个对__start__
和__end__
标记。
是否有任何方法来控制一个POST中的元素的顺序,然后它被发送到我的视图代码?