У меня есть макет модели 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, чтобы конечный пользователь увидел что-то вроде:
Автор A:
- Поэма 1
- Поэма 2
- Книга 1
- Поэма 3
- Книга 2
Автор B:
- Книга 1
- Книга 2
- Поэма 1
- Поэма 2
- Книга 3
И так далее. Я могу понять, как отображать их на интерфейсе (я могу либо использовать django-polymorphic, либо просто объединить author.book_set.all() и author.poem_set.all() в один список и отсортировать). Но я НЕ МОГУ понять, как реализовать это на сайте Admin. Я хотел бы, чтобы структура была точно такой же, как и выше, так что, когда я нажимаю на Author A, я получаю:
- inline для Poem 1
- inline для Poem 2
- встроенный для книги 1
- inline для Поэмы 3
- inline для книги 2
Если я просто присоединяю стихотворение и книгу как TabularInlines, они будут разделены на отдельные поля, например:
- inline для Poem 1
- inline для Poem 2
-
inline для Poem 3
-
inline для книги 1
- inline для книги 2
Но я считаю важным, чтобы они были объединены вместе в одном наборе полей (с полями, специфичными для другого дочернего класса, либо серыми, либо отсутствующими для каждого встроенного). Кто-нибудь знает, как это реализовать?