2014-04-22 16 views
11

Mam układ modelu Django, który wygląda mniej więcej tak:Django Admin - Mieszanie wielu modeli inlines w jednym interfejsie administratora

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 

Ogólnie rzecz biorąc, chciałbym pokazać informacje wymienione przez autora i klasyfikowane przez niektórych informacje, jak pub_date, tak że użytkownik końcowy będzie zobaczyć coś takiego:

Autor A:

  • Poem 1
  • Wiersz 2
  • Book 1
  • wiersz 3
  • Book 2

Autor B:

  • Book 1
  • Book 2
  • wiersz 1
  • wiersz 2
  • Książka 3

I tak dalej. Mogę wymyślić, jak wyświetlić te na front-end (mogę albo użyć django-polimorficzne lub po prostu połączyć author.book_set.all() i author.poem_set.all() w jedną listę i sortować). Ale NIE MOŻNA dowiedzieć się, jak to zaimplementować na stronie administratora. Chciałbym strukturę być dokładnie takie same jak powyżej - tak, że gdy kliknę Autor A ja dostać:

  • inline dla Poem 1
  • inline dla Poem 2
  • inline dla książki 1
  • liniowe dla Poem 3
  • liniowe dla Book 2

Jeśli po prostu dołączyć Poem i książki jak TabularInlines, byłyby oddzielane w oddzielnych fieldsets jak sposób:

  • liniowe dla Wiersz 1
  • liniowe dla Poem 2
  • liniowe dla Wiersz 3

  • rolki dla książki 1

  • liniowe dla Book 2

Myślę jednak, że ważne jest, aby funkcje były mieszane razem w pojedynczych polach et (z polami właściwymi dla innej klasy podrzędnej, które są szare lub nieobecne dla każdego wbudowanego). Czy ktoś ma jakiś pomysł, jak to wdrożyć?

Odpowiedz

7

Wygląda na to, że nie było prostego sposobu, aby to zrobić, więc zagłębiłem się trochę w django.contrib i zbudowałem aplikację do obsługi tego: Django Połączone linie Inlines.Jeśli byłoby to przydatne dla każdego, jest dostępne tutaj:

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

Powiązane problemy