Django - Как добавить несколько разрешений для группы?

У меня есть список разрешений

list = ['view', 'add', 'edit']

Разрешения внутри списка уже сохранены в моей таблице.

Сначала я очищаю предыдущее разрешение группы, чтобы можно было вставить новое

group = Group.objects.get(name='Group1')
group.permissions.clear()

Есть ли способ программно добавить список разрешений в Group1?

Допустим, у вас есть приложение с именем blog и модель с именем BlogPost и вы хотите добавить разрешения view, change, add для этой модели в группу с именем Blogger, вы должны быть в состоянии сделать:

from django.contrib.auth.models import Group, Permission

codenames = ['view_blogpost', 'change_blogpost', 'add_blogpost']

group = Group.objects.filter(name='Blogger').first()
permissions = Permission.objects.filter(content_type__app_label='blog', codename__in=codenames)
for permission in permissions.all():
    group.permissions.add(permission)

Примечание: Проверка на наличие app_label, вероятно, не нужна, но она гарантирует, что вы не добавите разрешения для модели BlogPost из другого приложения, если такая существует.

Посмотрите таблицы auth_permission и django_content_type в вашей базе данных на предмет полей и возможных значений.

Вернуться на верх