Я пытаюсь найти ответ в документах Django Auth, но, похоже, не могу найти то, что ищу.
Проблема, с которой я столкнулся, - это когда я определяю код для добавления групп (такие же, как группы на странице администратора):
#read_only
group, created = Group.objects.get_or_create(name='read_only')
if created:
group.permissions.add(can_read_campaign)
logger.info('read_only_user Group created')
#standard
group, created = Group.objects.get_or_create(name='standard_user')
if created:
group.permissions.add(can_edit_users)
logger.info('standard_user Group created')
#admin
group, created = Group.objects.get_or_create(name='admin_user')
if created:
group.permissions.add(can_edit_campaign, can_edit_users)
logger.info('admin_user Group created')
Когда я запустил этот код в models.py и init.py, и они оба дают мне эту ошибку:
django.core.exceptions.AppRegistryNotReady
Я предполагаю, что это связано с тем, что Model/ init пытается вставить вещи в приложение /admin django слишком рано?
Помогло бы мне помочь мне с решением, чтобы я мог добавлять эти группы программно.
Спасибо.
EDIT:
Это не дублирующий вопрос, на самом деле это добавление разрешений и групп внутри моделей во время настройки проекта, а не через оболочку.
Я решил эти проблемы, используя сигналы и приемники (модули django).
Я добавил код для создания разрешений/групп в его собственную функцию и украсил его получателем (post_migrate), который будет запускать эту функцию после завершения миграции, удалив эту ошибку.
@receiver(post_migrate)
def init_groups(sender, **kwargs):
#permission and group code goes here
Надеюсь, это поможет кому-то с этой проблемой!