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

rgo*_*gov 4 django django-admin

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

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

然而,在我找到Anton Belonovich 的帖子之前,这没有办法从内联编辑器创建新的 MeasurementMethods ,它说我需要admin.site.register(MeasurementMethod)首先。我这样做了,果然出现了编辑和创建按钮。

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

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

rgo*_*gov 8

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

@admin.register(MeasurementMethod)
class MeasurementMethodAdmin(admin.ModelAdmin):
  def has_module_permission(self, request):
    return False
Run Code Online (Sandbox Code Playgroud)

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

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