【问题标题】:Is there a way to have separate pages for inline admin forms in Django?有没有办法在 Django 中为内联管理表单设置单独的页面?
【发布时间】:2011-02-18 08:41:30
【问题描述】:

假设我有一个模型 A。然后,我有几个模型 B、C、D、E 等,每个模型都有一个模型 A 的外键。我知道我可以将 B、C、D 等设置为模型的内联A 这样当我创建模型 A 时,它会显示为每个子模型添加多个项目的表单集,但我认为这会使页面变得相当混乱且非常大。

有没有办法以某种方式,而不是将所有这些表单集内联在同一页面上,而是将每个表单集放在单独的页面上?换句话说,是否会有从模型 A 到创建/编辑关联模型 B、创建/编辑关联模型 C 等的链接?

谢谢!

【问题讨论】:

  • 没有答案?这似乎是一个常见的用例?

标签: python django django-admin


【解决方案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 %}
    

    它有点原始,但它可以满足您的需求。列表和复杂的聚合比较棘手,您需要测试原始的存在以确保不会生成模板错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-06
      • 2013-02-26
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多