问题 为新用户提供默认权限或默认组


默认行为似乎是新用户没有权限而没有组。但是,我不想手动授予每个新用户基本权限,我认为他们不想等我这样做。

我应该如何为新用户分配默认权限?

已经提出了一些类似的问题,但对一般情况没有明确的答案:

我在用着 python-social-auth 所以我没有自己的创建用户表单和视图,我想其他人都设置了默认权限。我假设我需要某种类型的on-user-create挂钩,但不确定最干净的方法是什么。

这与创建可能授予用户的默认可能权限无关,但作为参考,


12716
2017-07-10 06:54


起源



答案:


你可以订阅 post_save 在用户模型上发出信号,并将新创建的用户放入所需的组或添加权限。

from django.contrib.auth.models import User, Group

def add_to_default_group(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
        group = Group.objects.get(name='groupname')
        user.groups.add(group)

在django 1.8+上放下以下代码 AppConfig.ready()

 post_save.connect(add_to_default_group, sender=User)

10
2017-07-10 07:33



谢谢!就我而言,我想我也需要 sender=settings.AUTH_USER_MODEL。我也用过 group, group_created = Group.objects.get_or_create(name='Default')。 - jozxyqk
我是Django的新手,我添加这些行的文件? - enchance
apps.py 是上述行所在的文件(因此 AppConfig) - polarise


答案:


你可以订阅 post_save 在用户模型上发出信号,并将新创建的用户放入所需的组或添加权限。

from django.contrib.auth.models import User, Group

def add_to_default_group(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
        group = Group.objects.get(name='groupname')
        user.groups.add(group)

在django 1.8+上放下以下代码 AppConfig.ready()

 post_save.connect(add_to_default_group, sender=User)

10
2017-07-10 07:33



谢谢!就我而言,我想我也需要 sender=settings.AUTH_USER_MODEL。我也用过 group, group_created = Group.objects.get_or_create(name='Default')。 - jozxyqk
我是Django的新手,我添加这些行的文件? - enchance
apps.py 是上述行所在的文件(因此 AppConfig) - polarise