有没有办法在 Django 中为内联管理表单设置单独的页面?
Posted
技术标签:
【中文标题】有没有办法在 Django 中为内联管理表单设置单独的页面?【英文标题】:Is there a way to have separate pages for inline admin forms in Django? 【发布时间】:2011-02-18 08:41:30 【问题描述】:假设我有一个模型 A。然后,我有几个模型 B、C、D、E 等,每个模型都有一个模型 A 的外键。我知道我可以将 B、C、D 等设置为模型的内联A 这样当我创建模型 A 时,它会显示为每个子模型添加多个项目的表单集,但我认为这会使页面变得相当混乱且非常大。
有没有办法以某种方式,而不是将所有这些表单集内联在同一页面上,而是将每个表单集放在单独的页面上?换句话说,是否会有从模型 A 到创建/编辑关联模型 B、创建/编辑关联模型 C 等的链接?
谢谢!
【问题讨论】:
没有答案?这似乎是一个常见的用例? 【参考方案1】:我正在寻找一种方法来做同样的事情。看起来答案可能是“代理模型”。建议将其作为此 Stack Overflow 查询的答案:
django admin: separate read-only view and change view
...这个查询询问同一模型的多个管理员列表:
Multiple ModelAdmins/views for same model in Django admin
这里有关于代理模型的文档:
Django | Models | Django documentation#Proxy models
我自己是 Django 的新手,所以一旦我开始工作,我会发布更完整的回复。
【讨论】:
【参考方案2】:简单的答案是创建一个文件:
$TEMPLATE_DIR/admin/app/modelA/change_form.html
在您的变更表单中,您可以这样做:
% extends "admin/change_form.html" %
% block after_related_objects %
<ul>
<li><a href="/admin/app/modelB/ original.modelB.id /">Edit modelB</a></li>
</ul>
% endblock %
它有点原始,但它可以满足您的需求。列表和复杂的聚合比较棘手,您需要测试原始的存在以确保不会生成模板错误。
【讨论】:
以上是关于有没有办法在 Django 中为内联管理表单设置单独的页面?的主要内容,如果未能解决你的问题,请参考以下文章