Додавання користувача до групи в django


139

Як я можу додати користувача до групи в django за назвою групи?

Я можу це зробити:

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

Як би я зробив щось подібне:

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

Чутлива ця версія рішення? Коли я спробував це django 1.8, я отримав "несподіване ключове слово: ім'я"
rschwieb

Відповіді:


248

Знайдіть групу, використовуючи модель групи з назвою групи, а потім додайте користувача до набору користувачів

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

17
Дякую за це
Дурним

1
docs.djangoproject.com/en/dev/intro/tutorial01 Є подібні приклади в розділі "Гра з API"
juankysmith

9
Підручник дуже корисний. Я мав на увазі те, що я очікував би побачити у розділі документів під auth для програмного створення груп. натомість все є слабкий абзац: docs.djangoproject.com/en/1.3/topics/auth/#groups Я думаю, що це допомагає мати на увазі, що моделі auth - це лише звичайні моделі, і застосовується стандартна посилання на модель.
Френсіс Яконіелло

де user_setв Django doc? Я не можу його знайти ніде
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.