【问题标题】:Wagtail ModelAdmin. Several sections for custom User鹡鸰模型管理员。自定义用户的几个部分
【发布时间】:2019-03-13 02:09:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wagtail modeladmin


    【解决方案1】:

    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
    

    【讨论】:

    • 这确实可以使模型出现在左侧导航中,但是,在管理员中编辑组时,它们不会与权限列表中的其他模型一起出现。你遇到过这个问题吗?
    【解决方案2】:

    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 管理员为代理模型设置组权限,并且不需要permission_helper_class 就可以了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      相关资源
      最近更新 更多