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.

Reply via email to