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

标签 python flask flask-sqlalchemy flask-wtforms

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

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

那么我如何允许用户重新排列对象的顺序,然后记录这些更改?

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

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

最佳答案

jQuery UI 的 sortable有一个 toArray 消息 - 当在可排序对象上调用它时,它会按照元素在 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>

关于python - 在Python Flask中如何允许用户重新排列列表项并记录在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050292/

相关文章:

Python 强制 dict 条目为 utf-8

python - MySQL 日期时间列 WHERE col IS NULL 失败

python - 将数据从 Flask 传递到 HTML

python - Django 测试用户对象

python - Flask/Python 上下文调试

docker - 使用 heroku.yml 在 Heroku 上使用 Celery App 部署 Flask

python - 每次迁移时 Alembic 都会重新创建外键,导致表上出现重复的外键

python - 可以使用新 session 访问 sqlalchemy 关系吗?

python - SQLAlchemy ORM 转换为 pandas DataFrame

python - 包含检查枚举值