Разрешения django не добавляются в группы
Я создал проект с x приложениями.
Моя цель - создать группы с прикрепленными к ним разрешениями, которые заполняют таблицы auth - 'auth_groups' 'auth_permissions' и 'auth_group_permissions' при первоначальной миграции & migrate
Установленные приложения обновлены, пробовал с именем приложения, т.е. "morgue" и "morgue.apps.MorgueConfig" - использовал терминал для проверки приложений в классе apps.
база данных: пробовал и в mysql, и в sqlite3
Проблема: Я просто пытаюсь прикрепить стандартные пермы django к группам.
Проблема в том, что некоторые группы & permissions combo работают, а другие не добавляют разрешения группе.
У меня есть 10 групп 6 будут делать то, что требуется, 4 не будут.
~ смотрите мой код ниже, как я пытался сделать это.
мой код:
from django.contrib.auth.management import create_permissions
from django.contrib.auth.models import Group, Permission
from django.db import migrations
class Populator(object):
def populate_groups(apps, schema_editor):
# Create user groups
user_roles = [
"Admin only",
"Morgue only",
]
for name in user_roles:
Group.objects.create(name=name)
for app_config in apps.get_app_configs():
app_config.models_module = True
create_permissions(app_config, verbosity=0)
app_config.models_module = None
all_perms = Permission.objects.all() - does return all permissions
# morgue - 'i substituted for permission.content_type.app_label, does exist in database'
morgue_perms = [i for i in all_perms if i.content_type.app_label == "morgue"]
# group is created
Group.objects.get(name="Morgue only").permissions.add(*morgue_perms)
class Migration(migrations.Migration):
# dependencies = [("management", "0001_initial")]
operations = [migrations.RunPython(Populator.populate_groups)]
Обнаружено:
- при миграции создаются все необходимые разрешения
- при миграции создаются все необходимые группы
я пробовал использовать только операторы for и if вместо понимания списка [выше] безрезультатно
Я воссоздал приложение, т.е. 'morgue', используя команду startapp, на всякий случай, если файл в существующем приложении был поврежден, скопировав только форму, модель, представления, url и шаблон из существующего приложения.
Я могу использовать оболочку для заполнения групп с разрешениями
проверьте все разрешения и т.д. и group.permissions
.проверьте, что возвращает apps.get_app_configs()()
Я проверил базу данных, чтобы увидеть, что изменения вступают в силу 'mysql' и 'sqlite3'
На каждой итерации проверки или тестирования я удалял существующие миграции, базу данных и таблицы, а после внесения изменений в код применял миграцию и миграцию.
Я мог бы, вероятно, просто создать вид & шаблон приборной панели и обрабатывать все там, поскольку группы находятся в базе данных, как и разрешения, и, вероятно, просто установить начальную группу и разрешение только для сопровождающего и техподдержки.
Требуется помощь или просто другой взгляд на проблему