Django 1.7 onde colocar o código para adicionar grupos programaticamente?
Eu tenho tentado encontrar a resposta nos documentos de autenticação do Django, mas não consigo encontrar o que estou procurando.
O problema que estou enfrentando é que, quando defino o código para adicionar grupos (o mesmo que grupos na página de administração):
#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')
Quando eu executo esse código em models.py einiciar.py e os dois me deram este erro:
django.core.exceptions.AppRegistryNotReady
Presumo que isso se deva ao Modelo /iniciar tentando inserir coisas no django app / admin muito cedo?
Como posso adicionar esses grupos programaticamente?
EDITAR:
Esta não é uma pergunta duplicada; na verdade, estava adicionando permissão e grupos nos modelos durante a instalação do projeto, e não através do shell.
Eu resolvi esses problemas usando sinais e receptores (módulos django).
Eu adicionei o código para criar as permissões / grupos em sua própria função e decorada com um receptor (post_migrate), que executará essa função após a conclusão das migrações, removendo esse erro.
@receiver(post_migrate)
def init_groups(sender, **kwargs):
#permission and group code goes here