Opened 3 years ago
Closed 3 years ago
#32975 closed Bug (fixed)
ModelAdmin for proxy model with InlineModelAdmin for proxy superclass reference results in admin.E202
Reported by: | Lucas Weyne | Owned by: | Taulant Aliraj |
---|---|---|---|
Component: | contrib.admin | Version: | 3.1 |
Severity: | Normal | Keywords: | proxy, InlineModelAdmin, E202 |
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 (last modified by )
This is similar to #30273, but in this case, the InlineModelAdmin.model
is a model with references to a proxy superclass
Assume the following Django models:
class Reporter(models.Model): name = models.CharField(max_length=50) class Journalist(Reporter): class Meta: proxy = True class SpecialJournalist(Journalist): class Meta: proxy = True class Article(models.Model): journalist = models.ForeignKey(Journalist, on_delete=models.CASCADE)
Register model admins as follows (exemplary):
class ArticleInline(admin.TabularInline): model = Article fk_name = 'journalist' @admin.register(SpecialJournalist) class SpecialJournalistAdmin(admin.ModelAdmin): inlines = [ArticleInline]
This will result in the following error:
<class 'ArticleInline'>: (admin.E202) fk_name 'journalist' is not a ForeignKey to 'SpecialJournalist'.
This problem occurs on this check this check: https://github.com/django/django/blob/3.1.13/django/forms/models.py#L1006
A ValueError
is raised because the result for SpecialJournalist._meta.get_parent_list()
does not include Journalist
:
>>> SpecialJournalist._meta.get_parent_list() [<class 'Reporter'>]
Attachments (1)
Change History (11)
by , 3 years ago
Attachment: | test30273-modified.zip added |
---|
comment:1 by , 3 years ago
Description: | modified (diff) |
---|
comment:2 by , 3 years ago
Description: | modified (diff) |
---|
comment:4 by , 3 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:5 by , 3 years ago
Owner: | removed |
---|---|
Status: | assigned → new |
comment:6 by , 3 years ago
Owner: | set to |
---|---|
Status: | new → assigned |
comment:7 by , 3 years ago
Has patch: | set |
---|
Opened a PR for this: https://github.com/django/django/pull/14812
comment:8 by , 3 years ago
Patch needs improvement: | set |
---|
comment:9 by , 3 years ago
Patch needs improvement: | unset |
---|---|
Triage Stage: | Accepted → Ready for checkin |
Test project to see this error