Python Django管理-在单个管理界面中混合多个模型内联线

Python Django管理-在单个管理界面中混合多个模型内联线,python,django,inheritance,django-admin,Python,Django,Inheritance,Django Admin,我有一个Django模型布局,看起来像这样: class Author(models.Model): name = models.CharField(max_length=50, unique=True) class Publication(models.Model): author = models.ForeignKey(Author) #Some shared fields class Meta: abstract = T

我有一个Django模型布局,看起来像这样:

class Author(models.Model):
    name = models.CharField(max_length=50, unique=True)

class Publication(models.Model):
    author = models.ForeignKey(Author)        

    #Some shared fields

    class Meta:
        abstract = True

class Book(Publication):
    #Book specific fields

class Poem(Publication):
    #Poem specific fields
一般来说,我希望显示按作者列出的信息,并按某些信息排序,如发布日期,以便最终用户看到如下内容:

作者A:

  • 诗1
  • 诗2
  • 第一册
  • 诗3
  • 第二册
作者B:

  • 第一册
  • 第二册
  • 诗1
  • 诗2
  • 第三册
等等。我可以弄清楚如何在前端显示这些内容(我可以使用django多态性,也可以简单地将author.book\u set.all()和author.poem\u set.all()组合成一个列表并进行排序)。但是我不知道如何在管理站点中实现这一点。我希望结构与上面完全相同--这样当我单击Author A时,我会得到:

  • 第一首诗
  • 第二首诗
  • 第一册
  • 第三首诗
  • 第二册
如果我简单地将诗和书作为表格行附加,它们将被分成单独的字段集,如下所示:

  • 第一首诗
  • 第二首诗
  • 第三首诗

  • 第一册

  • 第二册

但我认为将它们混合在一个字段集中对于功能来说很重要(对于每个内联,另一个子类的特定字段要么灰显,要么不存在)。有人知道如何实现这一点吗?

好吧,似乎没有简单的方法来实现这一点,所以我深入研究了django.contrib,并构建了一个应用程序来处理这个问题:django合并的内联线。如果它对任何人都有用,可以在以下位置获得: