鹡鸰模型管理员。自定义用户的几个部分

Wagtail ModelAdmin. Several sections for custom User

我正在尝试为现有的自定义用户模型设置 Wagtail。根据要求,应该有几个用户页面可用,代表不同类型的用户(普通用户、经理等) 我尝试为每种情况制作单独的 ModelAdmin,覆盖 get_queryset 以按用户类型进行过滤。但看起来它们都显示了 ModelAdmin 的第一个定义,因为它们都有模型 - User

然后我尝试使用代理模型,在这种情况下根本没有显示,因为Wagtail似乎不支持代理模型。

我现在看到的唯一选择是创建自己的视图并添加指向它的菜单项

请告知在 Wagtail

中实现此目的的 best/easiest 方法是什么

Wagtail Admin 实际上与代理模型一起工作。缺少的部分是 Wagtail 权限部分不包括 Proxy 模型,因此您必须手动添加它:

from wagtail.contrib.modeladmin.helpers import PermissionHelper

class ProxyModelPermissionHelper(PermissionHelper):
    def user_can_list(self, user):
        return True

并在 ModelAdmin 中:

permission_helper_class = ProxyModelPermissionHelper

Wagtail 2.5 现在支持 Django 2.2 和 Django 2.2 now creates permissions for proxy models using the content type of the proxy model rather than the content type of the concrete model. Wagtail does not currently support setting proxy model permissions in the Wagtail admin,但是如果您更新到 Wagtail 2.5/Django 2.2,您可以使用 Django 管理员设置代理模型的组权限,并且您可以使用不需要 permission_helper_class

我正在为组分配用户权限,与下面 Github 问题中的讨论相反,我惊讶地发现在 Wagtail 2.5/Django 2.2 更新后所有代理模型都正确显示(请参阅此 Github issue 以及这可能发生的评论,因为代理模型在 ModelAdmin 中注册)。我已确认代理模型必须在 ModelAdmin 中注册才能显示在组权限屏幕中。

更新到 Django 2.2 后不要忘记 运行 migrate,因为有一个迁移将通过将内容类型从基本模型切换到代理来迁移任何现有的代理模型权限型号。