Django 1.7 где разместить код для добавления групп программно?
Я пытался найти ответ в документации 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 ив этом.py и они оба дают мне эту ошибку:
django.core.exceptions.AppRegistryNotReady
Я предполагаю, что это связано с моделью /в этом пытаетесь вставить вещи в приложение / администратор django слишком рано?
Как я могу добавить эти группы программно?
РЕДАКТИРОВАТЬ:
Это не повторяющийся вопрос, это фактически добавление разрешений и групп в моделях во время настройки проекта, а не через оболочку.
Я решил эту проблему, используя сигналы и приемники (модули Django).
Я добавил код для создания разрешений / групп в свою собственную функцию и украсил его получателем (post_migrate), который запустит эту функцию после завершения миграции, удалив эту ошибку.
@receiver(post_migrate)
def init_groups(sender, **kwargs):
#permission and group code goes here