我正在构建一个网站,它将提供不同语言的用户提供的内容,并且会有不同的实体,如文章,问题/答案,电子邮件模板等。以下数据库模式对我来说是合乎逻辑的(伪代码)描述我的数据库):
Item
id (primary key)
Translation
item_id (foreign key to Item)
lang (language code)
title (string)
body (string)
Article
published (datetime)
visible (boolean)
item_id (foreign key to Item)
FaqCategory
item_id (foreign key to Item)
FaqItem
category_id (foreign key to FaqCategory)
item_id (foreign key to Item)
... (and so on)
所以一般的想法很简单:
现在我想创建一个管理视图,该视图将显示该项目及其所有翻译。不幸的是,我不能使用Inlines,因为它们只能处理对象之间的直接关系。
所以我需要自己做一些像Inlines这样的东西 - 本质上允许在同一个视图上编辑不同的模型。是否可以使用标准的管理模板和类(当然需要一些子类化)?我找到了how to override the admin templates,当然很容易扩展更改表单模板并在那里插入任何内容,但我不知道如何为我的扩展提供数据。似乎管理类中没有上下文...我是否必须从头开始制作整个视图?
答案 0 :(得分:2)
您可以使用generic foreign keys代替使用Item
模型,以便您的模型成为:
Translation item (generic foreign key to Article, FaqCategory or FaqItem) lang (language code) title (string) body (string) Article published (datetime) visible (boolean)item_id (foreign key to Item)FaqCategoryitem_id (foreign key to Item)FaqItem category_id (foreign key to FaqCategory)item_id (foreign key to Item)
然后,您可以使用inline model admins。