class hierarchy:
models.py:
class d:
pass
class a:
d = models.OneToOneField(d, on_delete=models.CASCADE,
related_name="host")
class b:
pass
class dInlineAdmin(admin.TabularInline):
model = d
# admin.py
@admin.register(b)
class bSpecializedAdmin(admin.ModelAdmin):
inlines = [
dInlineAdmin,
]
Error message:
<class 'x.admin.RequirementInlineAdmin'>: (admin.E202) 'x.Requirement' has
no field named 'host'.
'host' is the related_name
--
Ticket URL: <https://code.djangoproject.com/ticket/28018>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Comment (by kapil garg):
I think, InlineModelAdmin works for models which have related objects. In
your example,
{{{
# admin.py
class dInlineAdmin(admin.TabularInline):
model = d
@admin.register(b)
class bSpecializedAdmin(admin.ModelAdmin):
inlines = [
dInlineAdmin,
]
}}}
model "b" is not related to model "d" and thus causing the exception. The
following code will work
{{{
# admin.py
class aInlineAdmin(admin.TabularInline):
model = a
@admin.register(d)
class bSpecializedAdmin(admin.ModelAdmin):
inlines = [
aInlineAdmin,
]
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28018#comment:1>
* type: Uncategorized => Bug
* component: Uncategorized => contrib.admin
--
Ticket URL: <https://code.djangoproject.com/ticket/28018#comment:2>
* status: new => closed
* resolution: => invalid
--
Ticket URL: <https://code.djangoproject.com/ticket/28018#comment:3>
Old description:
> This class hierarchy doesn't work with inlineadmin:
>
> class hierarchy:
>
> models.py:
> class d:
> pass
> class a:
> d = models.OneToOneField(d, on_delete=models.CASCADE,
> related_name="host")
> class b:
> pass
> class dInlineAdmin(admin.TabularInline):
> model = d
>
> # admin.py
> @admin.register(b)
> class bSpecializedAdmin(admin.ModelAdmin):
> inlines = [
> dInlineAdmin,
> ]
>
> Error message:
> <class 'x.admin.RequirementInlineAdmin'>: (admin.E202) 'x.Requirement'
> has no field named 'host'.
>
> 'host' is the related_name
New description:
This class hierarchy doesn't work with inlineadmin:
class hierarchy:
models.py:
{{{
class d:
pass
class a:
d = models.OneToOneField(d, on_delete=models.CASCADE,
related_name="host")
class b:
pass
}}}
admin.py
{{{
class dInlineAdmin(admin.TabularInline):
model = d
@admin.register(b)
class bSpecializedAdmin(admin.ModelAdmin):
inlines = [
dInlineAdmin,
]
}}}
Error message:
`<class 'x.admin.RequirementInlineAdmin'>: (admin.E202) 'x.Requirement'
has no field named 'host'.`
'host' is the related_name
--
--
Ticket URL: <https://code.djangoproject.com/ticket/28018#comment:4>