2

我到处搜索,没有找到任何答案。我正在使用 Django 1.4,我的问题是:我试图在 contrib admin 中实现“树状”模型结构。

假设我们有模型 A 和模型 B,它是模型 A 的子级,在 A 的管理 change_list 网格中,当我单击一个项目时,我应该重定向到模型 B 的 change_list 视图并使用 A 的子级对其进行过滤。

在以前版本的 Django 中,我只是重写了子模型管理 url 并添加了 (?(\d+))。

例如:添加 url ^(.+)/ 已更改为 ^(?< parent_id >(\d+))/(.+)/ 所以在更改视图中我检索了父对象并将其用于所有必需的过滤并发送它在要在面包屑中显示的上下文中。

它之所以有效,是因为在所有管理模板中,我们都有面包屑、添加、删除、历史记录等相关链接,例如,确认删除页面中的取消按钮具有 href='../../' 并单击它会把我从 app/model/parent_id/obj_id/delete 带到 app/model/parent_id

由于 1.4 中的所有模板链接都是使用反向 url 生成的更改,我显然在使用 NoReverseMatch 时遇到了错误。一个临时解决方法是在会话中传递父 ID,以便我可以在所有子管理页面中拥有它(我认为这不是一个好方法,原因有很多)。

底线我正在尝试以一种不会干扰当前模板的方式重写管理 url,以便我可以在 url 中发送父 id(在查询字符串中发送它也不是一个选项)有没有人出去那里做了类似的事情?

4

0 回答 0