Ich habe ein neues Modell mit einer Berechtigung hinzugefügt, und jetzt muss ich diese Berechtigung einigen Benutzern auf dem Produktionscomputer hinzufügen, nachdem Sie den Code bereitgestellt und syncdb für die neue Anwendung ausgeführt haben. Ich habe den richtigen Weg nicht gefunden. Die Autorendokumente erwähnen User.user_permissions.add (Erlaubnis), aber sagen Sie mir nie, was "Erlaubnis" ist oder der beste Weg, es zu bekommen.Was ist der richtige Weg, um Berechtigungen zu adressieren?
Antwort
Permission
(die in django.contrib.auth.models
lebt) ist ein Datenbankobjekt. Sie können alle mit Permission.objects.all()
sehen. Sie werden automatisch durch ein Post-Sync-Signal für jedes Modell erstellt (und as the docs mention, Sie können auch Ihre eigenen definieren).
Um die Berechtigungen zu einem Benutzer zugewiesen werden, müssen Sie zunächst die Permission
Objekte erhalten müssen (Permission.objects.get(*args)
verwenden), und dann können Sie sie an den Benutzer mit User.user_permissions.add(permission)
hinzufügen, wie Sie erwähnt.
Alternativ, und der einfachere Weg, wenn Sie dies tun können, ist nur die Django Admin-Site zu verwenden. Auf der Detailseite für jeden Benutzer gibt es einen Abschnitt, der sich auf Berechtigungen bezieht. Ich nehme an, dass Sie diese Berechtigungen nicht außerhalb des Admins verwenden, das ist also der einzige Bereich, auf den sie sich auswirken. Wenn Sie möchten, dass alle Benutzer über alle Berechtigungen verfügen, können Sie sie zu Superusern machen, indem Sie das Flag is_superuser
für jeden Benutzer auf True
setzen.
- 1. Was ist der richtige Weg um umzuleiten?
- 2. Was ist der richtige Weg, um den Fall zu vergleichen?
- 3. Was ist der richtige Weg, um in Rails zu zählen?
- 4. Was ist der richtige Weg, Testbereiche um Ausnahmen zu gruppieren
- 5. Was ist der aktuelle richtige Weg, um Edelsteine zu veröffentlichen?
- 6. Was ist der richtige Weg, um Controller-Aktionen zu erstellen?
- 7. Was ist der richtige Weg, um Montageversion zu behandeln?
- 8. Was ist der richtige Weg, um eine ListBox zu laden?
- 9. Was ist der richtige Weg, um FB.Event.subscribe zu behandeln?
- 10. Was ist der richtige Weg, um scala.io.Source zu verwenden?
- 11. Was ist der richtige Weg, um eine QList zu initialisieren?
- 12. Was ist der richtige Weg, um EF-Warnungen zu unterdrücken?
- 13. Was ist der richtige Weg, um diese Informationen zu erhalten?
- 14. Was ist der richtige Weg um Transienten zu markieren?
- 15. Was ist der richtige Weg, um nach False zu suchen?
- 16. Was ist der richtige Weg, um log4j in JSP-Seiten
- 17. Was ist der richtige Weg, um die Argumente eines Konstruktor
- 18. Was ist der richtige Weg, um mit Mongodb-Verbindungen umzugehen?
- 19. Was ist der richtige Weg, um eine Bildunterschrift mit html5
- 20. Lucene: Was ist der richtige Weg, um eine Suche abzubrechen?
- 21. Was ist der richtige Weg, um die CSV-Datei einzuloggen?
- 22. Was ist der richtige Weg, um eine Datei mit CUploadedFile
- 23. Was ist der richtige Weg, um Block in Initialisierungsmethoden einzurichten?
- 24. AngularJS - Was ist der richtige Weg dafür?
- 25. was ist der richtige Weg Schleife
- 26. Was ist der richtige Weg, um zwei Int-Werte zu teilen, um einen Float zu erhalten?
- 27. Was ist der richtige Weg, um den "in" -Operator zu verwenden, um ein Histogramm zu erstellen?
- 28. Was ist der richtige Weg, um Java-Quellcode in Eclipse zu importieren, um Verfälschungen zu vermeiden?
- 29. Was ist der richtige Weg GlassFish 4 neu zu starten?
- 30. php.log: Was ist der richtige Weg, Log-Datei zu löschen?
Das ist technisch die Antwort auf die Frage, die ich technisch gestellt habe, aber ich habe auf etwas anderes gehofft. Ich hatte gehofft, dass ich etwas offensichtliches verpasst habe wie add_perm (Model, permission_name) – ironfroggy
Nein, hast du nicht. Technisch gesehen können Sie django/contrib/auth/models.py in der 'User'-Klasse betrachten, um alle Methoden einer 'User'-Instanz zu sehen. – obeattie