Атрибут groups

Атрибут groups модели User представляет собой отношение многие-ко-многим к модели Group. Он позволяет управлять группами пользователя, добавлять и удалять пользователя из групп, а также проверять принадлежность пользователя к конкретной группе. Через группы пользователь получает все разрешения, назначенные этим группам. Атрибут работает как стандартный менеджер многих-ко-многим в Django.

Синтаксис

pythonuser.groups.add(group)
user.groups.remove(group)
user.groups.clear()
user.groups.all()

Пример

Получим все группы, в которые входит пользователь:

pythonfrom django.contrib.auth.models import User

user = User.objects.get(username='john')
groups = user.groups.all()
for group in groups:
  print(group.name)

Результат выполнения кода:

python"editors"
"moderators"

Пример

Добавим пользователя в группу 'editors':

pythonfrom django.contrib.auth.models import User, Group

user = User.objects.get(username='john')
editors_group = Group.objects.get(name='editors')
user.groups.add(editors_group)

print(user.groups.filter(name='editors').exists())

Результат выполнения кода:

python"True"

Пример

Удалим пользователя из группы 'moderators':

pythonfrom django.contrib.auth.models import User, Group

user = User.objects.get(username='john')
moderators_group = Group.objects.get(name='moderators')
user.groups.remove(moderators_group)

print(user.groups.filter(name='moderators').exists())

Результат выполнения кода:

python"False"

Пример

Проверим, входит ли пользователь в группу 'editors':

pythonfrom django.contrib.auth.models import User

user = User.objects.get(username='john')
is_editor = user.groups.filter(name='editors').exists()

print(is_editor)

Результат выполнения кода:

python"True"

Пример

Очистим все группы пользователя:

pythonfrom django.contrib.auth.models import User

user = User.objects.get(username='john')
user.groups.clear()

print(user.groups.count())

Результат выполнения кода:

python"0"

Смотрите также

  • класс Group,
    который представляет группу пользователей
  • атрибут permissions модели Group,
    который содержит разрешения группы
  • атрибут is_superuser,
    который определяет наличие всех прав у пользователя
  • метод has_perm,
    который проверяет наличие конкретного разрешения