Django 1.7 Wo soll der Code zum programmgesteuerten Hinzufügen von Gruppen abgelegt werden?
Ich habe versucht, die Antwort in den Django Auth-Dokumenten zu finden, kann aber scheinbar nicht finden, wonach ich suche.
Das Problem, das ich habe, ist, wenn ich den Code zum Hinzufügen von Gruppen definiere (das gleiche wie bei Gruppen auf der Admin-Seite):
#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')
Wenn ich diesen Code in models.py und ausgeführt habedrin.py und beide geben mir diesen Fehler:
django.core.exceptions.AppRegistryNotReady
Ich vermute das liegt am Model /drin versuchen, zu früh dinge in die django app / admin einzufügen?
Wie kann ich diese Gruppen programmgesteuert hinzufügen?
BEARBEITEN:
Dies ist keine doppelte Frage, sondern das Hinzufügen von Berechtigungen und Gruppen innerhalb der Modelle während der Einrichtung des Projekts und nicht über die Shell.
Ich habe dieses Problem durch die Verwendung von Signalen und Empfängern (Django-Module) gelöst.
Ich habe den Code zum Erstellen der Berechtigungen / Gruppen zu einer eigenen Funktion hinzugefügt und diesen mit einem Empfänger (post_migrate) versehen, der diese Funktion nach Abschluss der Migrationen ausführt und den Fehler beseitigt.
@receiver(post_migrate)
def init_groups(sender, **kwargs):
#permission and group code goes here