django 自定义用户模型组和权限

Posted

技术标签:

【中文标题】django 自定义用户模型组和权限【英文标题】:django custom user model groups and permissions 【发布时间】:2016-07-31 20:44:45 【问题描述】:

我正在尝试在我的 django 应用程序中实现自定义用户模型。

如果我只是从this article 复制并粘贴代码,效果会很好。但我希望这个自定义用户模型具有权限和组。所以我在 models.py 中添加了这个继承:

class MyUser(AbstractBaseUser, PermissionsMixin):

并将这些字段放入 admin.py MyUserAdmin(UserAdmin) 类:

('Permissions', 'fields': (
    'is_admin', 'is_staff', 'is_active', 'groups', 'user_permissions',
)),

但这对我来说看起来很奇怪:

据我所知,它必须是两个容器:左边(我有)显示所有可用的组和权限,右边(我没有)显示所有当前用户的组和权限。

附:我用谷歌搜索它,发现只有一个在 reddit 上发布了 10 个月但没有解决方案的帖子。

【问题讨论】:

你得到答案了吗? 【参考方案1】:

MyUserAdmin 类中删除这一行修复了问题。

filter_horizontal = ()

【讨论】:

【参考方案2】:

你必须在filter_horizontal(ARGUMENT)中设置参数, 参数是 model 中的 manyToMany 字段。

例子:

class CustomUser(PermissionsMixin, AbstractBaseUser):
    custom_groups = models.ManyToManyField('CustomUserGroups', blank=True)  

class CustomUserAdmin(UserAdmin):
  filter_horizontal = ('custom_groups', )

【讨论】:

以上是关于django 自定义用户模型组和权限的主要内容,如果未能解决你的问题,请参考以下文章

管理员中的 Django 自定义用户模型应用程序级别权限管理

如何在自定义仪表板中显示 django 角色和权限

Django - 向用户授予自定义权限

按用户角色和 id 过滤的 Django 自定义权限

如何在 django 模型表单中添加自定义字段?

Django 用户在创建/权限提升方面的权利