#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 [email protected].
To post to this group, send email to [email protected].
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