Добавление группы и разрешения к группе с помощью миграции django
< <Мне нужно создать группу "user" и "admin", затем добавить разрешение пользователю "Can view user" и администратору все эти разрешения и это нужно сделать с миграцией.
Мой уже код, который я предполагаю, совершенно глуп
# Generated by Django 4.0.3 on 2022-09-11 10:33
from django.db import migrations, transaction
from django.contrib.auth.models import Group, Permission
def add_group_permissions(a,b):
group, created = Group.objects.get_or_create(name='user')
try:
with transaction.atomic():
group.permissions.add(can_view_user)
group.save()
except InterruptedError:
group.delete()
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.RunPython(add_group_permissions),
]
Если кто-то может помочь, мне это нужно.
У меня есть несколько примеров пользовательских разрешений. В вашем models.py попробуйте сделать следующее ниже вашего класса:
class Meta:
permissions = [
("access_app", "Can access the budget app"), # access for all budget app
(
"level_2",
"Can access the budget app - level 2",
), # access to EyePlan model + hr
(
"level_3",
"Can access the budget app - level 3",
), # access to EyePlan model only
]
В вашем файле views.py:
class BudgetMixin(PermissionRequiredMixin):
permission_required = "budget.access_app"
Попробуйте адаптировать этот код под свои требования, надеюсь, он вам поможет.
Ок, теперь у меня есть это в models.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
username = models.EmailField(unique=True)
name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
phone_number = models.CharField(max_length=9, unique=True)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = []
class Meta:
permissions = [
("can_add_user", "Can add user"),
("can_change_user", "Can change user"),
("can_delete_user", "Can delete user"),
("can_view_user", "Can view user"),
]
Но как теперь создать группу "user" с правами can_view_user и "admin" с: can_add_user; can_change_user; can_delete_user; can_view_user.