在模板中,我有两个连接的列表,其中一个最初是空的。用户必须从左侧列表中选择最多三个选项,将它们添加到右侧列表中,对它们进行排序(根据他/她的优先级),然后将其发回。
看起来像:
<ul id="sortable1" class="connectedSortable">
<li value="1">Item A</li>
<li value="2">Item B</li>
<li value="3">Item C</li>
<li value="4">Item D</li>
<li value="5">Item E</li>
<li value="6">Item F</li>
<li value="7">Item G</li>
</ul>
</div>
<ul id="sortable2" class="connectedSortable">
<!--here goes the initially empty list-->
</ul>
在 {% script %} 块中:
<script>
$( function() {
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
} );
</script>
在 models.py 中,我有一个字段来存储所选信息:
preferences = CommaSeparatedIntegerField()
问题是如何从更新的 ul 发布信息(sortable2
)返回数据库?我可以添加一个隐藏字段preferences
到页面,然后使用 jQuery 填充它,但这似乎是一个丑陋的解决方案。什么是正确的?
如果您想将更新后的 ul (sortable2) POST 回数据库,那么可能的解决方案之一是ul(可排序2)应该在一个form您可以使用 POST 方法提交其数据。
现在当任何li 元素被移动从 ul (sortable1) 到 ul(sortable2),然后是输入类型元素也是inserted在英国 (sortable2) 以及列表元素,其中“值”属性输入的必须是与 li 元素相同在ul(sortable1)中。该输入元素的类型也将是hidden.
因此,现在当您使用提交按钮提交此表单时,您将在视图中返回所有数据,从而可以相应地对数据库进行更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)