djangoのグループにユーザーを追加する


139

グループの名前でdjangoのグループにユーザーを追加するにはどうすればよいですか?

私がすることができます:

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

どのように私はこのようなことをしますか:

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

このソリューションバージョンは機密ですか?これをdjango 1.8で試したところ、「予期しないキーワード:名前」が表示されました
rschwieb

回答:


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 docsで最も基本的なもののいくつかが欠落しているか、見つけるのが難しいのはばかげているようです
Francis Yaconiello

1
docs.djangoproject.com/en/dev/intro/tutorial01 セクション「APIで遊ぶ」にも同様の例があります
juankysmith

9
チュートリアルはかなり便利です。つまり、グループをプログラムで作成するために、authの下のドキュメントのセクションに表示されることを期待していました。代わりに、弱い段落があります:docs.djangoproject.com/en/1.3/topics/auth/#groups authモデルは単なる通常のモデルであり、標準モデル参照が適用されることを覚えておくと役立ちます。
Francis Yaconiello、2011

どこにあるuser_setDjangoのドキュメントに?私はどこにもそれを見つけることができません
Minh Thai

1
@MinhThai逆リレーションフィールドのデフォルト値は、フィールドにが設定されていない<content_type>_set場合related_nameです。
モニカとソックス

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

2
@enchance必要な場所に。おそらく、グループの割り当てを行っているビューのコード内にあります。
coredumperror 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.