使用Django一次更新多个记录

时间:2010-04-30 10:22:55

标签: django django-templates records

我想在左侧创建一个带复选框的记录列表....有点像Gmail中的收件箱。然后,如果用户选择这些复选框中的一些或全部,则可以通过点击按钮来更新所选择的记录(仅一个字段将被更新BTW)。

我仍然坚持如何做到这一点......想法?

显示代码

{% 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 %}

1 个答案:

答案 0 :(得分:31)

Use the queryset update() method

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

您的显示HTML缺少复选框的name值。如果您在所有复选框中只有一个名称,那么ID列表将被传递到单个POST变量中,您可以直接从request.POST获取(假设您将表单作为帖子提交,应该是):

id_list = request.POST.getlist('checkboxname')