从主管理列表中隐藏模型,但允许在内联编辑器中创建

时间:2018-03-15 07:40:38

标签: django django-admin

在我的Django应用程序中,我有一个属性模型,它与MeasurementMethod模型有多对多的关系。

我在属性的管理界面中放置了一个内联的MeasurementMethod,但我认为根本没有一个单独的界面来管理MeasurementMethods;没有理由让用户说,"哎呀,我想知道什么属性可以通过排水来衡量。"

但是,在我找到Anton Belonovich's post之前,我无法从内联编辑器创建新的MeasurementMethods,这表示我需要先admin.site.register(MeasurementMethod)。我做到了,确实出现了编辑和创建按钮。

但是现在在管理页面上,有一个应用列表和可以管理的模型,还有一个我不想要的MeasurementMethod条目。

有没有办法摆脱它?或者有更好的方法来实现这一目标吗?

2 个答案:

答案 0 :(得分:3)

解决方案是使用覆盖has_module_permission的自定义管理类注册MeasurementMethod类:

@admin.register(MeasurementMethod)
class MeasurementMethodAdmin(admin.ModelAdmin):
  def has_module_permission(self, request):
    return False

然后仍然可以内联编辑类。

  

ModelAdmin.has_module_permission(request)
  如果在管理索引页面上显示模块并且允许访问模块的索引页面,则应返回True,否则返回False。 ...覆盖它不会限制对添加,更改或删除视图的访问......

答案 1 :(得分:0)

您可以创建自定义管理网站docs,然后覆盖index方法/视图。确保使用这个新的管理站点注册模型并将其挂钩到urls.py文件中。