2009-03-02 21 views
3

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

4

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.

+0

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

+0

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

Verwandte Themen