在python烧瓶中如何允许用户重新排列列表项并在数据库中记录

时间:2014-06-05 01:42:37

标签: python flask flask-sqlalchemy flask-wtforms

我有一个烧瓶sqlalchemy bootsrap应用程序。 我的模板呈现表格中的项目列表,我希望用户能够重新排列。这些项目通过标准jinja2

显示
 {% for item in List %}
 {{item}}
  {%end for%}

那么如何让用户重新排列对象的顺序,然后记录这些变化呢?

我的一个想法是让jquery sortable允许重新安排,然后将新值发送到我的数据库(提交时或重新安排时)。

但是,如何编写sqlalchemy语句来更新数据库中的相应行? javascript和python之间的部分是什么,我确定要更改数据库中的哪一行?

1 个答案:

答案 0 :(得分:2)

jQuery UI的sortable有一条toArray消息 - 当它在sortable上调用时,它会按照它们在DOM中出现的顺序返回元素的ID。这可能是处理事情的最简单方法:

<ul id="theSortableStuff">
{% for item in things_to_sort %}
    <li id="item-{{ item.id }}">{{ item.name }}</li>
{% endfor %}
</ul>

<script>
var $sortables = $("#theSortableStuff").sortable({
  stop: function() {
    var sortedItems = $sortables.sortable("toArray");
    // Update some form in the DOM or use AJAX to invoke a server-side update
  }
});
</script>