Я задал несколько вопросов о наследовании Джанго в предыдущем вопросе .Теперь я пытаюсь выяснить, как заставить интерфейс администратора работать с ним.
Если бы у меня было несколько таких моделей:
class ContentItem(models.Model):
title = models.CharField(max_length=1000)
page_order = models.IntegerField()
last_update_date = models.DateTimeField(default=datetime.now())
class Meta:
abstract = True
ordering = ['page_order', 'last_update_date', 'title']
class LinkContent(ContentItem):
url = models.URLField()
link_text = models.CharField(max_lenth=1000)
class TextContent(ContentItem):
text = models.CharField()
class VideoContent(ContentItem):
title = models.CharField()
video_file = models.FieldField(upload_to = 'videos')
class Page(models.Model):
contents = models.ManyToManyField(ContentItem)
title = models.CharField()
Предположим, я использую django-model-utilsкак было упомянуто в ответе на предыдущий вопрос.
Как бы я заставил интерфейс администратора показывать правильную строку в зависимости от дочернего класса?Я хочу, чтобы правильный тип показывался для типа.Так что, если у меня есть 3 элемента по содержанию, текст, ссылка и видео.Затем, когда я смотрю на эту Page в интерфейсе администратора, я хочу видеть встроенную форму для каждого элемента.
Как это достигается?
Кроме того, как бы я справился с добавлением новых вещей в отношение?В идеале, когда пользователь хочет добавить новый ContentItem , ему будет задан вопрос, какой тип контента ему нужно добавить.Тогда форма добавления для этого типа контента откроется во всплывающем окне.Поэтому, если я укажу, что хочу добавить VideoContent , я получу всплывающее окно, позволяющее загрузить видео.Если я укажу, я хочу TextContent , я получаю всплывающее окно, где я вводю текст.
Похоже, что особое внимание необходимо уделить форме изменения для модели страницы.Любые предложения о том, как решить эту проблему?