#29637: KeyError on empty_form.fields in InlineAdminFormSet when user don't have
'add' permission for the child model
-------------------------------------+-------------------------------------
     Reporter:  Clément Mangin       |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  contrib.admin        |                  Version:  2.1
     Severity:  Release blocker      |               Resolution:
     Keywords:  admin, permission,   |             Triage Stage:  Accepted
  inline                             |
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by Clément Mangin):

 Replying to [comment:4 Tim Graham]:
 > Your "potential origin of issue" analysis seems correct. The
 "empty_form" in the traceback looks like an "add" form, so its fields are
 removed. A different approach to protecting against unauthorized edits may
 be needed.
 Would `self._meta.exclude = self._meta.fields[:]` work, instead of
 `self.fields = {}`?
 Because this fixes the crash and seems to achieve the same purpose, but I
 am not familiar enough with the codebase to trust this is a correct fix.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29637#comment:5>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/071.7a45bba5d794efd7139b04fdf79c2433%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to