﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
13618	prepopulated_fields crashes with get_readonly_fields	Artem Skoretskiy	Tobias McNulty	"If prepopulated field is marked as readonly then admin crashes:
{{{
Traceback:
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/core/handlers/base.py"" in get_response
  100.                     response = callback(request, *callback_args, **callback_kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/contrib/admin/options.py"" in wrapper
  239.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/utils/decorators.py"" in _wrapped_view
  76.                     response = view_func(request, *args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/views/decorators/cache.py"" in _wrapped_view_func
  69.         response = view_func(request, *args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/contrib/admin/sites.py"" in inner
  190.             return view(request, *args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/utils/decorators.py"" in _wrapper
  21.             return decorator(bound_func)(*args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/utils/decorators.py"" in _wrapped_view
  76.                     response = view_func(request, *args, **kwargs)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/utils/decorators.py"" in bound_func
  17.                 return func(self, *args2, **kwargs2)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/db/transaction.py"" in _commit_on_success
  299.                     res = func(*args, **kw)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/contrib/admin/options.py"" in change_view
  918.             model_admin=self)
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/contrib/admin/helpers.py"" in __init__
  32.         } for field_name, dependencies in prepopulated_fields.items()]
File ""/home/tonnzor/projects/twangoo/twangoo-hg/django/forms/forms.py"" in __getitem__
  106.             raise KeyError('Key %r not found in Form' % name)

Exception Type: KeyError at /admin/twangoo/deal/3/
Exception Value: ""Key 'slug' not found in Form""
}}}

Admin class:
{{{
class DealAdmin(TwangooAdmin):
    prepopulated_fields = {""slug"": (""title"",)}
    readonly_fields = (""status"", ""preview_link"", ""image_height"", ""image_width"", ""currency"", ""newsletter_id"",
                       ""closed_at"", ""short_url"")    # must be tuple

    def get_readonly_fields(self, request, obj=None):
        if obj.status != 'draft':
            return ('slug',) + DealAdmin.readonly_fields
        return DealAdmin.readonly_fields
}}}

We need to disable editing slug if deal has already published (changing slug will break the link)."	Bug	closed	contrib.admin	dev	Normal	fixed		tonn81@… Ben Spaulding rm_	Accepted	1	0	0	1	0	0
