Jak dodać użytkownika do grupy w django na podstawie nazwy grupy?
Mogę to zrobić:
user.groups.add(1) # add by id
Jak bym zrobił coś takiego:
user.groups.add(name='groupname') # add by name
Jak dodać użytkownika do grupy w django na podstawie nazwy grupy?
Mogę to zrobić:
user.groups.add(1) # add by id
Jak bym zrobił coś takiego:
user.groups.add(name='groupname') # add by name
Odpowiedzi:
Znajdź grupę za pomocą modelu grupy z nazwą grupy, a następnie dodaj użytkownika do 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)
user_set
w Django doc? Nie mogę go nigdzie znaleźć
<content_type>_set
sytuacja, related_name
w której pole nie jest ustawione.
Oto jak to zrobić w nowoczesnych wersjach Django (przetestowanych w Django 1.7):
from django.contrib.auth.models import Group
group = Group.objects.get(name='groupname')
user.groups.add(group)
Group.objects.get_by_natural_key('groupname')
, ale to nie powoduje zwarcia: D
coredumperror ma rację, ale znalazłem jedną rzecz, którą muszę się nią podzielić
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