views:

99

answers:

1

I want to create a list of records with checkboxes on the left side....kinda like the inbox in Gmail. Then if a user selects some or all of these checkboxes, then the selected record(s) can be updated (only one field will be updated BTW), possibly by clicking a button.

I'm stuck on how to do this though....ideas?

Display Code

{% 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 %}
+2  A: 

Use the queryset update() method.

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

Your display HTML is missing a name value for the checkboxes. If you just have a single name across all checkboxes, then the list of IDs will be passed into a single POST variable, which you can get straight from request.POST (assuming you're submitting your form as a post, which you should be):

id_list = request.POST.getlist('checkboxname')
Daniel Roseman
My main problem is with the checkboxes....sorry I forgot to mention that bit....how do I pass along the selected ids?
Stephen
How are you generating the checkboxes?
Daniel Roseman
The update() method is very useful, just make sure that you are aware of an important caveat! If you have custom save() method on your affected model(s) and/or pre_save / post_save signal handlers, those will not get called.
Béres Botond
@47 see my update.
Daniel Roseman
ahhh....thnx Daniel. I'll try out this.
Stephen