Wie ermöglicht man einem Benutzer in Python Flask, Listenelemente neu anzuordnen und in der Datenbank aufzuzeichnen?
-
21-12-2019 - |
Frage
Ich habe eine Flask-SQL-Alchemy-Bootsrap-App.Meine Vorlage stellt eine Liste von Elementen in einer Tabelle dar, die der Benutzer neu anordnen soll.Die Elemente werden über Standard-Jinja2 angezeigt
{% for item in List %}
{{item}}
{%end for%}
Wie kann ich dem Benutzer also ermöglichen, die Reihenfolge der Objekte neu anzuordnen und diese Änderungen dann aufzuzeichnen?
Eine Idee, die ich hatte, war zu bekommen jquery sortierbar um eine Neuanordnung zu ermöglichen und dann die neuen Werte an meine Datenbank zu senden (entweder beim Absenden oder während sie neu angeordnet werden).
Aber wie schreibe ich eine SQLalchemy-Anweisung, um die entsprechende Zeile in meiner Datenbank zu aktualisieren?Was ist der Teil zwischen Javascript und Python, in dem ich identifiziere, welche Zeile in der Datenbank geändert werden soll?
Lösung
jQuery-Benutzeroberflächen sortable
hat ein toArray
message – wenn es für ein Sortierobjekt aufgerufen wird, werden die IDs der Elemente in der Reihenfolge zurückgegeben, in der sie im DOM erscheinen.Dies ist wahrscheinlich die einfachste Art, Dinge zu handhaben:
<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>