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 в вашей базе данных на предмет полей и возможных значений.