1

私はDjangoのウェブサイトをまとめていて、マンネリに陥っています。

このサイトには、データを追加および編集するためのフォームが多数ありますが、これはかなり基本的なものですが、外部キーの関係になると、さらに多くのオプションが必要になります。販売されているクラス「製品」があり、データベース内のすべての製品に対して、オブジェクト「メンテナンス」、「年会費」などを追加したいとします。

複数選択フィールドを使用してフォームを作成し、必要な製品を選択してから、メンテナンス オブジェクトのパラメータを入力する別のフィールドを作成するだけです。これは追加には問題ありませんが、編集/削除/リレーションの描画/レポートの生成などを行いたい場合はどうすればよいでしょうか?

私が考えているのは、製品がスクロール可能、ソート可能、フィルター可能なテーブルにリストされていれば、それは素晴らしいことです (これらのことは私が簡単に処理できます)。次に、このテーブルに必要なのは、操作したい行 (つまり、オブジェクト) を選択できるようにし、さまざまな機能に対して複数の送信ボタンを用意することです。

送信ボタンは処理できますが、テーブルの行を選択可能にする方法がわかりません。いくつかのJavaScript、私は収集しますか?

各行にオブジェクトの主キーに関連付けられた非表示のチェックボックスがある場合、JavaScript は行のクリックを処理し、非表示のチェックボックスを選択/選択解除し、行を適切に色付けできることをどこかで読みました。

別の方法として、JQuery の「選択可能」がありますが、それは私には非常に抽象的です。

これについてはどうすればよいでしょうか?提案?サンプルコード?

4

2 に答える 2

0

独自のフォーム クラスを作成し、そこに JavaScript を埋め込む必要はありません。これを行う適切な方法は、form mediaを使用するか、単に以下のようにすることです:

{% for a in some_queryset %}
   <tr>
      <td><input type="checkbox" id="pk" name="pk" value={{ a.pk }} /></td>
      <td>{{ a.name }}</td>
   </tr>
{% endfor %}

# later on ...

<input 
    type="submit"
    name="action1"
    value="Do Action 1"
    id="action1_btn" class="btn btn-primary disabled" />
<input
    type="submit"
    name="action2"
    value="Do Action 2"
    id="action2_btn"
    class="btn btn-danger disabled" />

# and other buttons...

最後に、この JavaScript のビット:

<script type="text/javascript">
$('#pk').click(function() {
  if ($('input[name="pk"]:checked').length > 0)
  {
     // more than one check box is checked
     $("#action1_btn").removeClass('disabled');
     $("#action2_btn").removeClass('disabled');
     // other actions you want to do

  } else {

     // No check boxes are checked
     $("#action1_btn").addClass('disabled');
     $("#action2_btn").addClass('disabled');
  }
});
</script>

このスクリプトは、行がチェックされている場合にのみボタンを有効にします。

最後に、django は、ここで複製したことを正確に実行するフォームセットを提供します。

于 2012-09-27T12:06:17.957 に答える