Wagtail ModelAdmin。自定义用户的几个部分

时间:2018-10-08 11:52:58

标签: wagtail modeladmin

我正在尝试为现有的自定义用户模型设置Wagtail。根据要求,应该有几个用户页面,分别代表不同类型的用户(常规用户,管理者等) 我尝试为每种情况制作单独的ModelAdmin,重写get_queryset以便按用户类型进行过滤。但似乎所有人都显示了ModelAdmin的第一个定义,因为所有人都有模型-用户

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

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

请告知在Wa中实现此目的的最佳/最简便方法是什么

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Wagtail 2.5现在支持Django 2.2,并且Django 2.2现在使用代理模型的内容类型而不是具体模型的内容类型为代理模型创建权限。 Wagtail当前不支持setting proxy model permissions in the Wagtail admin,但是如果您更新到Wagtail 2.5 / Django 2.2,则可以使用Django admin为代理模型设置组权限,最好不要使用{{1} }。

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

在更新到Django 2.2之后,别忘了运行ModelAdmin,因为存在一种迁移,该迁移将通过将内容类型从基本模型切换到代理模型来迁移任何现有的代理模型权限。