#25622: InlineAdmin raises 'GenericRel' object has no attribute 
'get_related_field'
-------------------------------+--------------------
     Reporter:  johnraz        |      Owner:  nobody
         Type:  Bug            |     Status:  new
    Component:  contrib.admin  |    Version:  1.8
     Severity:  Normal         |   Keywords:
 Triage Stage:  Unreviewed     |  Has patch:  0
Easy pickings:  0              |      UI/UX:  0
-------------------------------+--------------------
 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.

--
Ticket URL: <https://code.djangoproject.com/ticket/25622>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.745f28ac9e77d378e4863b1e3cf12ac9%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to