No frasco python, como permitir que um usuário reorganize os itens da lista e registre no banco de dados
-
21-12-2019 - |
Pergunta
Eu tenho um aplicativo de bootsrap Flask sqlalchemy.Meu modelo renderiza uma lista de itens em uma tabela que eu gostaria que o usuário pudesse reorganizar.Os itens são exibidos através do jinja2 padrão
{% for item in List %}
{{item}}
{%end for%}
então, como posso permitir que o usuário reorganize a ordem dos objetos e registre essas alterações?
Uma ideia que tive foi conseguir jquery classificável para permitir a reorganização e, em seguida, enviar os novos valores para meu banco de dados (no momento do envio ou à medida que são reorganizados).
Mas, como escrevo uma instrução sqlalchemy para atualizar a linha apropriada em meu banco de dados?Qual é a parte entre javascript e python onde identifico qual linha do banco de dados deve ser alterada?
Solução
UIs jQuery sortable
tem um toArray
mensagem - quando é chamado em um classificável ele retorna os IDs dos elementos na ordem em que aparecem no DOM.Esta é provavelmente a maneira mais simples de lidar com as coisas:
<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>