在Django中将用户添加到组
我该如何通过组的名称在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)