РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
566 of 818 menu

Класс Group

Класс Group из модуля django.contrib.auth.models предназначен для организации пользователей в группы с общими разрешениями. Каждая группа может содержать набор разрешений (permissions), которые автоматически применяются ко всем пользователям, входящим в эту группу. Это удобно для массового управления правами доступа, например, для создания групп "Модераторы", "Редакторы" или "Администраторы".

Основные атрибуты

Класс Group имеет следующие основные атрибуты:

  • name - уникальное имя группы (строка, обязательное поле)
  • permissions - поле ManyToManyField, связывающее группу с разрешениями из модели Permission

Синтаксис

from django.contrib.auth.models import Group, Permission # Создание группы group = Group.objects.create(name="group_name") # Добавление разрешений permission = Permission.objects.get(codename="permission_name") group.permissions.add(permission)

Пример

Давайте создадим группу "Редакторы" и добавим ей разрешение на изменение статей:

from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType from myapp.models import Article # Получаем тип контента для модели Article content_type = ContentType.objects.get_for_model(Article) # Получаем разрешение на изменение permission = Permission.objects.get( content_type=content_type, codename="change_article" ) # Создаем группу и добавляем разрешение group = Group.objects.create(name="Редакторы") group.permissions.add(permission) print(f"Группа '{group.name}' создана с разрешениями:") for perm in group.permissions.all(): print(f" - {perm.name}")

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

"Группа 'Редакторы' создана с разрешениями:" " - Can change article"

Пример

Давайте добавим пользователя в группу и проверим его разрешения:

from django.contrib.auth.models import Group, User # Получаем группу и пользователя group = Group.objects.get(name="Редакторы") user = User.objects.get(username="john_doe") # Добавляем пользователя в группу user.groups.add(group) user.save() # Проверяем разрешения пользователя has_perm = user.has_perm("myapp.change_article") print(f"Пользователь {user.username} имеет разрешение на изменение статей: {has_perm}") # Выводим все группы пользователя print(f"Группы пользователя {user.username}:") for g in user.groups.all(): print(f" - {g.name}")

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

"Пользователь john_doe имеет разрешение на изменение статей: True" "Группы пользователя john_doe:" " - Редакторы"

Пример

Давайте создадим группу с несколькими разрешениями и удалим одно из них:

from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType from myapp.models import Article # Получаем тип контента для модели Article content_type = ContentType.objects.get_for_model(Article) # Получаем разрешения permissions = Permission.objects.filter( content_type=content_type, codename__in=["add_article", "change_article", "delete_article"] ) # Создаем группу и добавляем все разрешения group = Group.objects.create(name="Полный доступ к статьям") group.permissions.set(permissions) print(f"Группа '{group.name}' имеет разрешения:") for perm in group.permissions.all(): print(f" - {perm.name}") # Удаляем разрешение на добавление delete_perm = Permission.objects.get( content_type=content_type, codename="add_article" ) group.permissions.remove(delete_perm) print(f"\nПосле удаления разрешения на добавление:") for perm in group.permissions.all(): print(f" - {perm.name}")

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

"Группа 'Полный доступ к статьям' имеет разрешения:" " - Can add article" " - Can change article" " - Can delete article" "\nПосле удаления разрешения на добавление:" " - Can change article" " - Can delete article"

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

  • класс User,
    который представляет пользователя системы
  • класс Permission,
    который хранит разрешения для моделей
  • атрибут name,
    который содержит имя группы
  • атрибут permissions,
    который содержит разрешения группы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить