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 8719 KeyError on save of model with inline-edited ForeignKey with non-standard primary key jonloyens nobody "When editing a ForeignKey relationship inline in admin, if the model representing the foreign key has a non-standard primary key, a KeyError will be thrown when editing an existing model. Consider the following models and admin classes: {{{ class ModelA( models.Model ) some_data = models.CharField(max_length=255, blank=True) class ModelB( models.Model ): mypk_id = models.AutoField(primary_key=True) modela = models.ForeignKey(ModelA) more_data = models.CharField(max_length=255, blank=True) class ModelBAdmin( admin.StackedInline ): model = ModelB class ModelAAdmin( admin.ModelAdmin ): inlines = [ModelBAdmin] }}} When attempting to save an existing ModelA in admin with an existing ModelB. Admin will throw a KeyError due to there not being a 'mypk_id' in the cleaned_data of the FormSet here: {{{ Environment: Request Method: POST Request URL: http://localhost:8000/admin/auth/user/12922/ Django Version: 1.0-beta_2-SVN-8706 Python Version: 2.5.1 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'mc_billing_site.billing', 'django.contrib.admin'] Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware') Traceback: File ""/Library/Python/2.5/site-packages/django/core/handlers/base.py"" in get_response 86. response = callback(request, *callback_args, **callback_kwargs) File ""/Library/Python/2.5/site-packages/django/contrib/admin/sites.py"" in root 173. return self.model_page(request, *url.split('/', 2)) File ""/Library/Python/2.5/site-packages/django/views/decorators/cache.py"" in _wrapped_view_func 44. response = view_func(request, *args, **kwargs) File ""/Library/Python/2.5/site-packages/django/contrib/admin/sites.py"" in model_page 192. return admin_obj(request, rest_of_url) File ""/Library/Python/2.5/site-packages/django/contrib/auth/admin.py"" in __call__ 42. return super(UserAdmin, self).__call__(request, url) File ""/Library/Python/2.5/site-packages/django/contrib/admin/options.py"" in __call__ 196. return self.change_view(request, unquote(url)) File ""/Library/Python/2.5/site-packages/django/db/transaction.py"" in _commit_on_success 238. res = func(*args, **kw) File ""/Library/Python/2.5/site-packages/django/contrib/admin/options.py"" in change_view 588. self.save_formset(request, form, formset, change=True) File ""/Library/Python/2.5/site-packages/django/contrib/admin/options.py"" in save_formset 378. formset.save() File ""/Library/Python/2.5/site-packages/django/forms/models.py"" in save 280. return self.save_existing_objects(commit) + self.save_new_objects(commit) File ""/Library/Python/2.5/site-packages/django/forms/models.py"" in save_existing_objects 294. obj = existing_objects[form.cleaned_data[self.model._meta.pk.attname]] Exception Type: KeyError at /admin/testapp/modela/12922/ Exception Value: 'mypk_id' }}} I am absolutely conviced this is related to this other ticket: [http://code.djangoproject.com/ticket/8695 8695] but want to make sure this gets tested as well. " closed contrib.admin dev fixed Unreviewed 0 0 0 0 0 0