【发布时间】:2010-09-05 19:00:25
【问题描述】:
假设我有一个包含 ModelA、ModelB 和 ModelC 的应用
对于我的应用程序的管理页面 (/admin/app),我如何挂钩到“应用程序管理”页面的显示,以便我可以隐藏空的模型类型(没有实例)?
【问题讨论】:
标签: django
假设我有一个包含 ModelA、ModelB 和 ModelC 的应用
对于我的应用程序的管理页面 (/admin/app),我如何挂钩到“应用程序管理”页面的显示,以便我可以隐藏空的模型类型(没有实例)?
【问题讨论】:
标签: django
这是一个很大的问题,因为您必须根据每个 INSTALLED_APPS 的每个模型的数据库/ORM 查询(至少是 count())的结果动态注册/注销应用包含。
每次您查看管理员。
虽然这本身就很不愉快,但请记住,每个应用程序的 admin.py 都是在服务器重新启动/重新加载时间 (IIRC) 时处理的,所以你不能指望在那里连接一些可爱的东西,比如那些 DB 查找,因为它只会运行一次,并不能反映模型的实际状态,当前有对象存储在您的数据库中。
更好的举动:别动。如果给定模型没有要查看的对象,则给定模型就没有要查看的对象。
如果您担心您的客户/用户在他们不应该在其中制作新模型,那么您可以解决用户教育和管理员用户权限的组合。
正如在一些地方所说:“管理员不是您的应用程序。”如果自定义超出了微不足道的范围,那么是时候编写自己的视图了。您仍然可以通过覆盖基本管理模板甚至从与其他管理员相同的根路径为它们提供服务,将它们连接到管理站点。
【讨论】: