#25622 closed Bug (fixed)
InlineAdmin raises 'GenericRel' object has no attribute 'get_related_field'
Reported by: | Jonathan Liuti | Owned by: | Simon Charette |
---|---|---|---|
Component: | contrib.admin | Version: | 1.8 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I have the following setup (simplified for the sake of clarity)
# models.py class ModelA(models.Model): content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') uuid = models.UUIDField(default=uuid.uuid4, unique=True, db_index=True) class ModelB(models.Model): model_a_fk = models.ForeignKey('ModelA', to_field='uuid') model_c_fk = models.ForeignKey('ModelC') class ModelC(models.Model): ... # nothing fancy
#admin.py class ModelAAdmin(admin.ModelAdmin): .... #nothing fancy class InlineModelB(admin.TabularInline): model=ModelB raw_id_fields=('model_a_fk', 'model_c_fk') class ModelBAdmin(admin.ModelAdmin): raw_id_fields=('model_a_fk', 'model_c_fk') class ModelCAdmin(admin.ModelAdmin): inlines=(InlineModelB,)
Now, when going to the ModelCAdmin
view, triggering the search pop-up for ModelB.model_a_fk
field, I will get the following traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py", line 616, in wrapper return self.admin_site.admin_view(view)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 110, in _wrapped_view response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py", line 233, in inner return view(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 34, in _wrapper return bound_func(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 110, in _wrapped_view response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 30, in bound_func return func.__get__(self, type(self))(*args2, **kwargs2) File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py", line 1548, in changelist_view self.list_max_show_all, self.list_editable, self) File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/views/main.py", line 67, in __init__ if to_field and not model_admin.to_field_allowed(request, to_field): File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py", line 489, in to_field_allowed related_object.field.rel.get_related_field() == field): AttributeError: 'GenericRel' object has no attribute 'get_related_field'
Triggering the search pop-up for ModelB.model_c_fk
works just fine.
It looks like https://code.djangoproject.com/ticket/23616 but in a different place.
Change History (11)
comment:1 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 9 years ago
Resolution: | → worksforme |
---|---|
Status: | assigned → closed |
comment:3 by , 9 years ago
Do you have a django.contrib.contenttypes.fields.GenericRelation
defined somewhere?
comment:4 by , 9 years ago
Yes you are absolutely right.
I do have a GenericRelation
setup like this (in addition to the previous example):
# models.py class AbstractModelX(models.Model): model_a_gen_rel = GenericRelation(ModelA) class Meta: abstract=True class ModelD(AbstractModelX): pass class ModelE(AbstractModelX): pass
comment:6 by , 9 years ago
Has patch: | set |
---|---|
Triage Stage: | Unreviewed → Accepted |
Managed to reproduced with simplified models, thanks. Here's a PR you can test.
I guess we should backport this since it's a bug in a new feature.
comment:7 by , 9 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
Hi johnraz,
This looks like a legitimate traceback but I cannot reproduce with your provided setup against
1.8.x
andmaster
.Can you confirm I didn't miss something?