Admin issues with inlines

20 views
Skip to first unread message

Luca Corti

unread,
Sep 24, 2015, 6:51:58 AM9/24/15
to Django users
Hello,

I have an issue with the admin and inlines for related models. When hitting save on a model editing page I get this traceback:

Traceback (most recent call last):
File "lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "lib/python2.7/site-packages/django/contrib/admin/options.py", line 616, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "lib/python2.7/site-packages/django/utils/decorators.py", line 110, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "lib/python2.7/site-packages/django/contrib/admin/sites.py", line 233, in inner
return view(request, *args, **kwargs)
File "lib/python2.7/site-packages/django/contrib/admin/options.py", line 1519, in change_view
return self.changeform_view(request, object_id, form_url, extra_context)
File "lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper
return bound_func(*args, **kwargs)
File "lib/python2.7/site-packages/django/utils/decorators.py", line 110, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "lib/python2.7/site-packages/django/utils/decorators.py", line 145, in inner
return func(*args, **kwargs)
File "lib/python2.7/site-packages/django/contrib/admin/options.py", line 1466, in changeform_view
if all_valid(formsets) and form_validated:
File "lib/python2.7/site-packages/django/forms/formsets.py", line 439, in all_valid
if not formset.is_valid():
File "lib/python2.7/site-packages/django/forms/formsets.py", line 304, in is_valid
self.errors
File "lib/python2.7/site-packages/django/forms/formsets.py", line 278, in errors
self.full_clean()
File "lib/python2.7/site-packages/django/forms/formsets.py", line 325, in full_clean
for i in range(0, self.total_form_count()):
File "lib/python2.7/site-packages/django/forms/formsets.py", line 115, in total_form_count
return min(self.management_form.cleaned_data[TOTAL_FORM_COUNT], self.absolute_max)
File "lib/python2.7/site-packages/django/forms/formsets.py", line 97, in management_form
code='missing_management_form',
ValidationError: [u'I dati del ManagementForm sono mancanti oppure sono stati manomessi’]


The error message in Italian reads “ManagementForm data is missing or has been tampered with”.

I also noticed the POST request contains an extra part with __prefix__ in names and empty id which looks suspicious:
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="csrfmiddlewaretoken"

0123456789abcdef
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-TOTAL_FORMS"

41
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-INITIAL_FORMS"

41
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-MIN_NUM_FORMS"

0
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-MAX_NUM_FORMS"

1000
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-0-id"

405718
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-0-property”

87462

[...]

------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-40-id"

462250
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-40-property"

87462
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-__prefix__-id"


------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="model_set-__prefix__-property"

87462
------WebKitFormBoundaryHni3TflxO2xxoMnc
Content-Disposition: form-data; name="_save"

Salva
------WebKitFormBoundaryHni3TflxO2xxoMnc--

A stack overflow post (http://stackoverflow.com/questions/11546245/django-inline-admin-formset-extra-entry-has-prefix-instead-of-number)
suggests display: none is not picked up from forms.css (empty-form class) but in my case it seems it is. I’m looking at Chrome Developer Tools.

My inlines are defined as:

class Inline(admin.TabularInline):
model = Model
show_change_link = True
can_delete = False
extra = 0
fields = [‘property1', ‘property2']
readonly_fields = [‘property1', ‘property2']

thanks

--
Luca Corti
lu...@fantacast.it

Reply all
Reply to author
Forward
0 new messages