En Python Flask, cómo permitir que un usuario vuelva a organizar los elementos de la lista y grabar en la base de datos
-
21-12-2019 - |
Pregunta
Tengo una aplicación FLASK SQLALCHEMY BOOTSRAP. Mi plantilla hace una lista de artículos en una tabla que me gustaría que el usuario pudiera reorganizar.Los artículos se muestran a través de Standard Jinja2
{% for item in List %}
{{item}}
{%end for%}
Entonces, ¿cómo puedo permitir al usuario reorganizar el orden de los objetos y luego registrar esos cambios?
Una idea que tuve fue conseguir jquery clasable para permitir que se vuelva a organizar y luego envíe el nuevoValores a mi base de datos (ya sea que se envíen, o como están reorganizados).
Pero, ¿cómo escribo una declaración SQLALCHEMY para actualizar la fila apropiada en mi base de datos?¿Cuál es la pieza entre JavaScript y Python donde identifico en qué fila en el DB para cambiar?
Solución
JQUERY UI's GentacodiCetAnDode tiene un mensaje sortable
: cuando se llama a un ordenable, devuelve las ID de los elementos en el orden en que aparecen en el DOM.Esta es probablemente la forma más sencilla de manejar las cosas:
<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>