Dans Python Flask, comment permettre à un utilisateur de réorganiser les éléments de la liste et de les enregistrer dans la base de données
-
21-12-2019 - |
Question
J'ai une application bootsrap flask sqlalchemy.Mon modèle affiche une liste d'éléments dans un tableau que j'aimerais que l'utilisateur puisse réorganiser.Les éléments sont affichés via Jinja2 standard
{% for item in List %}
{{item}}
{%end for%}
alors, comment puis-je permettre à l'utilisateur de réorganiser l'ordre des objets, puis d'enregistrer ces modifications ?
Une idée que j'avais était d'obtenir jquery triable pour permettre la réorganisation, puis envoyer les nouvelles valeurs à ma base de données (soit lors de la soumission, soit au fur et à mesure de leur réorganisation).
Mais comment puis-je écrire une instruction sqlalchemy pour mettre à jour la ligne appropriée dans ma base de données ?Quelle est la pièce entre javascript et python où j'identifie la ligne de la base de données à modifier ?
La solution
interface utilisateur jQuery sortable
a un toArray
message - lorsqu'il est appelé sur un triable, il renvoie les identifiants des éléments dans l'ordre dans lequel ils apparaissent dans le DOM.C'est probablement la façon la plus simple de gérer les choses :
<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>