在模板中,我有两个连接列表,其中一个最初是空的。用户必须从左侧列表中选择最多三个选项,将它们添加到右侧列表中,对它们进行排序(根据他/她的优先级)然后将其发回。
看起来像:
<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>
和{%scripts%}阻止:
<script>
$( function() {
$( "#sortable1, #sortable2" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
} );
</script>
models.py中的我有一个存储所选信息的字段:
preferences = CommaSeparatedIntegerField()
问题是如何将更新的ul(sortable2
)中的信息发送回数据库?我可以在页面中添加一个隐藏字段preferences
,然后使用jQuery填充它,但它似乎是一个丑陋的解决方案。什么是正确的?
答案 0 :(得分:0)
如果要将更新的ul(sortable2)发布回数据库,那么可能的解决方案之一就是 ul(sortable2)应该在表单中您可以使用POST方法提交其数据。
现在当任何 li元素从ul(sortable1)移动到ul(sortable2)时,输入类型元素也插入< / strong>在ul(sortable2)中与list元素一起,输入的“value”属性必须与ul中的与li元素相同 (sortable1)是。此输入元素的类型也将是隐藏。
现在,当您使用提交按钮提交此表单时,您将在视图中返回所有数据,因此可以相应地更改数据库。