テンプレートには2つの接続リストがあり、そのうちの1つは最初は空です。ユーザーは、左のリストから最大3つのオプションを選択し、それらを右のリストに追加し、それらの順序を(優先順位にしたがって)順序付けしてから戻す必要があります。djangoのフォームにulのリストを送ってください
それは次のようになります。
<ul id="sortable1" class="connectedSortable">
<li value="1">Item A</li>
<li value="2">Item B</li>
<li value="3">Item C</li>
<li value="4">Item D</li>
<li value="5">Item E</li>
<li value="6">Item F</li>
<li value="7">Item G</li>
</ul>
</div>
<ul id="sortable2" class="connectedSortable">
<!--here goes the initially empty list-->
</ul>
と{%のスクリプト%}ブロックに:
preferences = CommaSeparatedIntegerField()
:models.pyで
<script>
$(function() {
$("#sortable1, #sortable2").sortable({
connectWith: ".connectedSortable"
}).disableSelection();
});
</script>
私が選択した情報を格納するためのフィールドを持っています
更新されたul(sortable2
)の情報をデータベースにPOSTする方法は問題ですか?隠しフィールドpreferences
をページに追加してjQueryを使用して埋め込むことができますが、これは醜い解決策のようです。正しいものは何ですか?
"入力型要素も挿入されます。" - ul(sortable2)をフォームに登録するとすぐに自動的に挿入されるか、入力型を自分で追加する必要がありますか? –
要素をul(sortable1)からul(sortable2)に移動するボタンをクリックすると、onClick関数を記述する必要があります。その関数では、divと入力型要素を作成し、その要素をjavascriptを使ってそのdivに追加する必要があります。 javascript - > https://github.com/amyth/hammer/blob/master/static/js/main.jsを使用して、入力フィールドまたは一般的なdivや要素をhtmlに追加する方法の例を参照してください populate関数と、input要素がdivにどのように追加され、どのようにプロパティと属性が設定されたかを参照してください。 –