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 12577,BaseGenericInlineFormSet doesn't have save_new() to set the fk instance,raffaele.salmaso@…,nobody,"The behaviour introduced with modelvalidation breaks the generic content type framework This is the simplest code used to reproduce the bug {{{ # models.py class PhoneNumber(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') phone = models.CharField(max_length=30) class Meta: unique_together = (('content_type', 'object_id', 'phone',),) def __unicode__(self): return self.phone class Contact(models.Model): name = models.CharField(max_length=50) phones = generic.GenericRelation(PhoneNumber) def __unicode__(self): return self.name # admin.py class PhoneInline(GenericTabularInline): model = PhoneNumber extra = 1 class ContactAdmin(admin.ModelAdmin): inlines = (PhoneInline,) admin.site.register(Contact, ContactAdmin) }}} Now trying to save a contact instance with a phone number via the admin interface, results a 404 KeyError {{{ Environment: Request Method: POST Request URL: http://localhost:8000/admin/example/genericcontact/1/ Django Version: 1.2 alpha 1 Python Version: 2.6.4 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.comments', 'example'] Installed Middleware: ('django.middleware.gzip.GZipMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.doc.XViewMiddleware', 'django.middleware.transaction.TransactionMiddleware') Traceback: File ""/home/raf/src/www/simple/site-packages/django/django/core/handlers/base.py"" in get_response 101. response = callback(request, *callback_args, **callback_kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/contrib/admin/options.py"" in wrapper 237. return self.admin_site.admin_view(view)(*args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/utils/decorators.py"" in __call__ 36. return self.decorator(self.func)(*args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/utils/decorators.py"" in _wrapped_view 86. response = view_func(request, *args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/utils/decorators.py"" in __call__ 36. return self.decorator(self.func)(*args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/views/decorators/cache.py"" in _wrapped_view_func 70. response = view_func(request, *args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/contrib/admin/sites.py"" in inner 187. return view(request, *args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/utils/decorators.py"" in _wrapped_view 86. response = view_func(request, *args, **kwargs) File ""/home/raf/src/www/simple/site-packages/django/django/db/transaction.py"" in _commit_on_success 295. res = func(*args, **kw) File ""/home/raf/src/www/simple/site-packages/django/django/contrib/admin/options.py"" in change_view 883. if all_valid(formsets) and form_validated: File ""/home/raf/src/www/simple/site-packages/django/django/forms/formsets.py"" in all_valid 317. if not formset.is_valid(): File ""/home/raf/src/www/simple/site-packages/django/django/forms/formsets.py"" in is_valid 238. if bool(self.errors[i]): File ""/home/raf/src/www/simple/site-packages/django/django/forms/formsets.py"" in _get_errors 212. self.full_clean() File ""/home/raf/src/www/simple/site-packages/django/django/forms/formsets.py"" in full_clean 254. self.clean() File ""/home/raf/src/www/simple/site-packages/django/django/forms/models.py"" in clean 412. self.validate_unique() File ""/home/raf/src/www/simple/site-packages/django/django/forms/models.py"" in validate_unique 435. row_data = tuple([form.cleaned_data[field] for field in unique_check]) Exception Type: KeyError at /admin/example/genericcontact/1/ Exception Value: content_type }}} ",,closed,Contrib apps,dev,,fixed,,raffaele.salmaso@… apasotti@…,Unreviewed,1,0,0,0,0,0