2

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

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

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

请建议在 Wagtail 中实现这一目标的最佳/最简单方法是什么

4

2 回答 2

6

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

from wagtail.contrib.modeladmin.helpers import PermissionHelper

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

并在ModelAdmin

permission_helper_class = ProxyModelPermissionHelper
于 2018-10-08T14:14:45.087 回答
0

Wagtail 2.5 现在支持 Django 2.2,Django 2.2现在使用代理模型的内容类型而不是具体模型的内容类型为代理模型创建权限。 Wagtail 目前不支持在 Wagtail admin 中设置代理模型权限,但是如果您更新到 Wagtail 2.5/Django 2.2,您可以使用 Django admin 设置代理模型的组权限,并且您无需permission_helper_class使用即可。

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

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

于 2019-05-17T19:23:11.490 回答