在Django中将用户添加到组

183 投票
4 回答
145461 浏览
提问于 2025-04-16 19:14

我该如何通过组的名称在Django中将用户添加到一个组里呢?

我可以这样做:

user.groups.add(1) # add by id

那我该如何做类似这样的事情呢:

user.groups.add(name='groupname') # add by name

4 个回答

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
134

下面是如何在现代版本的Django中做到这一点的(在Django 1.7中测试过):

from django.contrib.auth.models import Group
group = Group.objects.get(name='groupname')
user.groups.add(group)
345

先用组模型找到你想要的那个组,找到组的名字,然后把用户添加到这个组的用户列表里。

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

撰写回答