在Django中有没有办法为内联管理表单创建单独页面?
假设我有一个模型A。然后,我有几个模型B、C、D、E等,它们每个都和模型A有个关联。 我知道我可以把B、C、D等作为模型A的内嵌表单,这样在创建模型A的时候,就可以看到添加多个子模型的表单,但我觉得这样会让页面显得很拥挤,而且很大。
有没有办法让每个表单在不同的页面上,而不是把所有的表单都放在同一个页面上?换句话说,就是从模型A可以链接到创建或编辑关联的模型B、创建或编辑关联的模型C等等?
谢谢!
2 个回答
0
简单的答案就是创建一个文件:
${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 %}
这方法有点原始,但能满足你的需求。处理列表和复杂的数据汇总就比较麻烦了,你需要检查原始数据是否存在,以确保不会出现模板错误。
2
我正在寻找一种方法来做到完全相同的事情。看起来答案可能是“代理模型”。这个答案被建议用来解决这个Stack Overflow的问题:
…还有这个关于同一个模型的多个管理列表的问题:
关于代理模型的文档在这里:
我自己也是Django的新手,所以等我搞明白后会发一个更完整的回复。