#18508: Bug in handling out-of-date POST data with inlineformset_factory
------------------------+------------------------------------
     Reporter:  olau    |                    Owner:  nobody
         Type:  Bug     |                   Status:  new
    Component:  Forms   |                  Version:  1.4
     Severity:  Normal  |               Resolution:
     Keywords:          |             Triage Stage:  Accepted
    Has patch:  0       |      Needs documentation:  0
  Needs tests:  0       |  Patch needs improvement:  0
Easy pickings:  0       |                    UI/UX:  0
------------------------+------------------------------------

Comment (by olau):

 Thanks! I can see now that my description is a bit cryptic. Basically, the
 problem here is a concurrency problem.

 If you post a formset, Django is supposed to use another branch of the
 code to match each individual form with its object because you can't
 assume that a POSTed formset[i] corresponds to get_queryset()[i] - an
 element could have been added/deleted or the ordering changed.

 Unfortunately, there's a trivial bug in this logic so it fails if one of
 the elements has been deleted.

 I only noticed this because there was a Javascript bug in a site I've been
 doing maintenance for, so people would sometimes end up double-POSTing a
 delete, causing a mysterious crash. This patch and the patch in #14877
 fixed it. You can still get concurrency issues but can at least deal with
 it yourself (e.g. through form validation) since Django passes the data on
 to you rather than crashing. :)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/18508#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to