#32975: ModelAdmin for proxy model with InlineModelAdmin for proxy superclass
reference results in admin.E202
-------------------------------------+-------------------------------------
               Reporter:  Lucas      |          Owner:  nobody
  Weyne                              |
                   Type:  Bug        |         Status:  new
              Component:             |        Version:  3.1
  contrib.admin                      |       Keywords:  proxy,
               Severity:  Normal     |  InlineModelAdmin, E202
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 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:

 {{{#!python

 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):


 {{{#!python

 class ArticleInline(admin.TabularInline):
     model = Article
     fk_name = 'reporter'


 @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`:

 {{{#!python
 >>> SpecialJournalist._meta.get_parent_list()
 [<class 'Reporter'>]
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/32975>
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/053.fa8887bf66871234bdcd0398178a595e%40djangoproject.com.

Reply via email to