web-dev-qa-db-ja.com

Djangoを使用して、一度に複数のレコードを更新する

左側にチェックボックスが付いたレコードのリストを作成したいのですが... Gmailの受信トレイのようなものです。次に、ユーザーがこれらのチェックボックスの一部またはすべてを選択した場合、おそらくボタンをクリックすることで、選択したレコードを更新できます(1つのフィールドのみが更新されます)。

私はこれを行う方法に固執しています....アイデア?

表示コード

{% for issue in issues %}
   <tr class="{% cycle 'row1' 'row2' %}">
      <td><input name="" type="checkbox" value="{{ issue.id }}" /></td>
      <td>{{ issue.description }}</td>
      <td>{{ issue.type }}</td>
      <td>{{ issue.status }}</td>
      <td>{{ issue.date_time_added|date:"d, M Y" }}</td>
      <td>{{ issue.added_by }}</td>
      <td>{{ issue.assigned_to }}</td>
   </tr>
{% endfor %}
24
Stephen

クエリセットupdate()メソッドを使用

id_list = list_of_ids_from_checkboxes
MyModel.objects.filter(id__in=id_list).update(myattribute=True)

表示HTMLにチェックボックスのname値がありません。すべてのチェックボックスで名前が1つしかない場合は、IDのリストが1つのPOST変数に渡されます。これは、request.POSTから直接取得できます(フォームを投稿として送信する必要があります):

id_list = request.POST.getlist('checkboxname')
40
Daniel Roseman