将用户添加到django中的组

Dav*_*542 115 python django

如何通过组名称将用户添加到django中的组?

我可以做这个:

user.groups.add(1) # add by id
Run Code Online (Sandbox Code Playgroud)

我该怎么做这样的事情:

user.groups.add(name='groupname') # add by name
Run Code Online (Sandbox Code Playgroud)

jua*_*ith 214

使用组模型查找具有组名称的组,然后将用户添加到user_set

from django.contrib.auth.models import Group
my_group = Group.objects.get(name='my_group_name') 
my_group.user_set.add(your_user)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你.在django文档中,一些最基本的东西要么丢失要么很难找到,这似乎很愚蠢 (15认同)
  • 本教程非常有用,我的意思是我希望在auth下的文档部分中以编程方式创建组.相反,所有都有一个弱段:https://docs.djangoproject.com/en/1.3/topics/auth/#groups我想有必要记住,auth模型只是常规模型,而标准模型参考适用. (9认同)

cor*_*ror 83

以下是如何在Django的现代版本中执行此操作(在Django 1.7中测试):

from django.contrib.auth.models import Group
group = Group.objects.get(name='groupname')
user.groups.add(group)
Run Code Online (Sandbox Code Playgroud)

  • @enchance无论你需要在哪里.可能在正在进行组分配的View的代码中. (2认同)

小智 11

coredumperror 是对的,但我发现了一件事我需要分享

from django.contrib.auth.models import Group

# get_or_create return error due to 
new_group = Group.objects.get_or_create(name = 'groupName')
print(type(new_group))       # return tuple

new_group = Group.objects.get_or_create(name = 'groupName')
user.groups.add(new_group)   # new_group as tuple and it return error

# get() didn't return error due to 
new_group = Group.objects.get(name = 'groupName')
print(type(new_group))       # return <class 'django.contrib.auth.models.Group'>

user = User.objects.get(username = 'username')
user.groups.add(new_group)   # new_group as object and user is added
Run Code Online (Sandbox Code Playgroud)

  • 这是因为 get_or_create 返回一个元组:(object,created)。```new_group, created = Group.objects.get_or_create(name = 'groupName')``` 可以工作 (7认同)