将用户添加到Django中的组


139

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

我可以做这个:

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

我将如何做这样的事情:

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

此解决方案版本敏感吗?当我尝试使用django 1.8时,我得到了“意外的关键字:名称”
rschwieb

Answers:


248

使用具有组名称的“组模型”查找组,然后将用户添加到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)

17
谢谢你 在Django文档中缺少某些最基本的东西或者很难找到这些东西似乎很愚蠢
Francis Yaconiello 2011年

1
docs.djangoproject.com/en/dev/intro/tutorial01 “使用API​​”一节中有类似的示例
juankysmith,2011年

9
该教程非常有用,我的意思是我希望能在auth下的文档部分中看到以编程方式创建组。取而代之的是,这里有一段很短的段落:docs.djangoproject.com/en/1.3/topics/auth/#groups我想记住auth模型只是常规模型会有所帮助,并且适用标准模型参考。
弗朗西斯·亚科涅洛

user_setDjango文档在哪里?我在任何地方都找不到它
Minh Thai

1
@MinhThai反向关系字段的默认值是未在字段上设置的<content_type>_setwhen related_name
与莫妮卡(Monica)

99

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

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

1
您也可以这样做Group.objects.get_by_natural_key('groupname'),但是并不能缩短它:D
CpILL '17

2
@enchance在任何需要这样做的地方。可能在执行组分配的View的代码中。
coredumperror17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.