2014-04-22 173 views
11

我有一個看起來像這樣一個Django模型佈局: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 

一般來說,我想顯示按作者列出,分類信息被一些信息,如PUB_DATE,從而使最終用戶將看到:

作者答:

  • 詩1
  • 詩2
  • 書1
  • 詩3
  • 書2

作者B:

  • 書1
  • 書2
  • 詩1
  • 詩2
  • Book 3

等等。我可以弄清楚如何在前端顯示這些內容(我可以使用django-polymorphic或將author.book_set.all()和author.poem_set.all()簡單地組合到一個列表中並進行排序)。但我無法弄清楚如何在Admin站點實現這個功能。我想的結構完全相同如上 - 這樣,當我點擊一個作者我會得到:

  • 內嵌的詩1
  • 內嵌的詩2
  • 內嵌的書1
  • 直列爲詩3
  • 直列爲書2

如果我只是將詩和簿作爲TabularInlines,它們將被分離成單獨的字段集,如所以:

  • 直列爲詩1
  • 直列爲詩2
  • 直列爲詩3

  • 直列用於預訂1

  • 直列爲書2

但我認爲它們在單一領域混合在一起的功能很重要et(對於每個內聯,特定於其他子類的字段都變灰或不存在)。有沒有人有任何想法如何實現這一點?

回答

7

好吧,它似乎沒有一個簡單的方法來做到這一點,所以我鑽研了一下django.contrib,並構建了一個應用來處理這個問題:Django Merged Inlines。如果它對任何人都有用,可以在這裏找到:

https://github.com/MattBroach/Django-Merged-Inlines