On Wed, Jan 4, 2012 at 5:33 AM, Martin Tiršel <dja...@blackpage.eu> wrote: > Hello, > > I have a list of items (from a model) I want to display with checkboxes (for > deleting multiple objects at once). The same behaviour like in django admin > (change list). I can do such thing in templates: > > {% for item in item_list %} > <li> > <input type="checkbox" name="somename" value="item_{{ item.id }}"> > {{ item }} > </li> > {% endfor %} > > and in a view loop through somename list I get from POST and delete items. > Is there a better Django way I should do it or this approach I wrote is > correct? Is there a way I could use Django forms for processing the POST > data and delete items in a form's method (so I can use it from multiple > views)? >
I do it in a form, because I like to keep all of the heavy logic out of views and keep it in the models or the forms. Here is a relatively complete example form from my codebase: class DivisionRemovalForm(forms.Form): class MultipleDivisionField(forms.ModelMultipleChoiceField): def label_from_instance(self, obj): url = reverse('organizer_division_view', kwargs={'div_pk': obj.pk}) label = '<a href="%s">%s</a>' % (url, obj.__unicode__()) return mark_safe(label) divisions = MultipleDivisionField(queryset=[], widget=forms.CheckboxSelectMultiple()) def __init__(self, competition, *args, **kwargs): self.competition = competition super(DivisionRemovalForm, self).__init__(*args, **kwargs) self.fields['divisions'].queryset = self.competition.divisions.all() def save(self): for div in self.cleaned_data['divisions']: units = div.units.all() if units: for unit in units: unit.in_division = False unit.save() divisions = self.cleaned_data['divisions'] divisions.delete() -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.