#19255: Cannot validate generic foreignkey in new instance --------------------------------------+------------------------------------ Reporter: bouke | Owner: nobody Type: Uncategorized | Status: new Component: contrib.contenttypes | Version: 1.4 Severity: Normal | Resolution: Keywords: | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 --------------------------------------+------------------------------------ Changes (by matt@…):
* needs_docs: => 0 * needs_better_patch: => 0 * needs_tests: => 0 * stage: Unreviewed => Accepted Comment: I'm able to reproduce the problem by adding an extra field into the Model class and creating another models which Model can point to: {{{ from django.db import models from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType class Model(models.Model): number = models.IntegerField() content_type = models.ForeignKey(ContentType, related_name='content') object_id = models.PositiveIntegerField() object = generic.GenericForeignKey() def clean(self): assert self.object_id assert self.object_id class AnotherModel(models.Model): another_number = models.IntegerField() }}} Then I create a model admin for the other model: {{{ from django.contrib.contenttypes import generic from django.contrib import admin from testcase.models import Model, AnotherModel class ModelInline(generic.GenericStackedInline): model = Model class AnotherModelAdmin(admin.ModelAdmin): inlines = (ModelInline,) admin.site.register(AnotherModel, AnotherModelAdmin) }}} When I create a new AnotherModel and try to save it I get this: {{{ Environment: Request Method: POST Request URL: http://127.0.0.1:8000/admin/testcase/anothermodel/add/ Django Version: 1.6.dev20121122090508 Python Version: 2.7.2 Installed Applications: ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'testcase', 'django.contrib.admin') Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') Traceback: File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/core/handlers/base.py" in get_response 116. response = callback(request, *callback_args, **callback_kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/contrib/admin/options.py" in wrapper 369. return self.admin_site.admin_view(view)(*args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/utils/decorators.py" in _wrapped_view 91. response = view_func(request, *args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/views/decorators/cache.py" in _wrapped_view_func 89. response = view_func(request, *args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/contrib/admin/sites.py" in inner 202. return view(request, *args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/utils/decorators.py" in _wrapper 25. return bound_func(*args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/utils/decorators.py" in _wrapped_view 91. response = view_func(request, *args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/utils/decorators.py" in bound_func 21. return func(self, *args2, **kwargs2) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/db/transaction.py" in inner 208. return func(*args, **kwargs) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/contrib/admin/options.py" in add_view 1035. if all_valid(formsets) and form_validated: File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/formsets.py" in all_valid 380. if not formset.is_valid(): File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/formsets.py" in is_valid 277. err = self.errors File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/formsets.py" in errors 259. self.full_clean() File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/formsets.py" in full_clean 298. self._errors.append(form.errors) File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/forms.py" in _get_errors 117. self.full_clean() File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/forms.py" in full_clean 274. self._post_clean() File "/Users/matt/Code/envs/django/lib/python2.7/site- packages/django/forms/models.py" in _post_clean 333. self.instance.clean() File "/Users/matt/Code/envs/django/tickets/19255/testsite/testcase/models.py" in clean 12. assert self.object_id Exception Type: AssertionError at /admin/testcase/anothermodel/add/ Exception Value: }}} -- Ticket URL: <https://code.djangoproject.com/ticket/19255#comment:1> 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 post to this group, send email to django-updates@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.