You could also go with a column called "Execute" and a checkbox for the actions you want to execute and then a single submit button that grabs all the checked actions. But I think the other way is probably more intuitive.
-Tim On Sat, Feb 20, 2010 at 10:45 AM, Tom <t.scr...@gmail.com> wrote: > David, thanks for that. I ended up going for the simple HTML method > because, as you guessed, the SubmitField idea was a bit unwieldy for > my needs. > > Thanks for your help! > > Tom > > On 20 Feb, 15:37, David De La Harpe Golden > <david.delaharpe.gol...@ichec.ie> wrote: > > On Sat, Feb 20, 2010 at 06:42:11AM -0800, Tom wrote: > > > Hi all, > > > > > I have a view that iterates over a queryset to produce a list of > > > items. I have added a checkbox next to each item (from within the > > > template) and have multiple 'submit' buttons that will do different > > > things with the items selected. For example, one button will delete > > > all the items selected. > > > > > My question is how can I detect which of the submit buttons has been > > > pressed? Is there some property of 'request' that I can access that > > > will tell my view which action to peform on the selected items? > > > > That is more a html thing than a django thing. > > > > Non-stone-age browsers will pass the particular submit button used > > for a form with multiple submits - and only that button - as only > > that button is "successful" (IIRC old IE used to do some wierd/dumb > > thing involving the name and/or value but I've largely suppressed the > > memory...) > > > > http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2 > > > > (aside: You'll also still come across some ancient html tutorials > claiming > > forms are allowed exactly one submit button, that is untrue) > http://www.w3.org/TR/html401/interact/forms.html#submit-button > > > > i.e. given a POSTed form with two submit buttons > > > > <input type="submit" name="cancel" value="Cancel"/> > > <input type="submit" name="accept" value="Accept"/> > > > > Check request.POST.get('cancel') to see if cancel was clicked, > > and request.POST.get('accept') to see if accept was clicked. > > > > (remember someone curious can nonetheless construct a post request > > with both accept and cancel just to see if your server logic > > falls over in exploitable fashion) > > > > While django doesn't actually handle input type=submit for you, > > there are "SubmitField" snippets floating about. They may have advantages > > (e.g. form prefix handling, could in theory refuse to validate > > if more than one SubmitField of the form was successful from a > > malicious client, and maybe supply workarounds for that IE annoyance > > I only vaguely recollect), but may be overkill - you could e.g. just > > pass a "submit" dictionary down to the template, with a key and value > > to use as the name of various submit buttons (just to avoid > > hardcoding in the template) i.e. the above becomes (assuming you've > > stuck the submit dictionary on the form): > > > > <input type="submit" name="{{form.submit.cancel}}" value="Cancel"/> > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@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.