python tick Wann programmgesteuert benutzerdefinierte Django-Berechtigungen erstellen?



python plot beschriftung (1)

Die Berechtigung / Authentifizierungsdokumentation für Django 1.4 enthält das folgende Snippet zum programmgesteuerten Erstellen benutzerdefinierter Berechtigungen:

Bearbeiten: (Ich möchte dies für Berechtigungen verwenden, die nicht unbedingt mit einer bestimmten Modellklasse verknüpft sind, sondern allgemeinere Berechtigungen, die sich über mehrere Typen erstrecken.)

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get(app_label='myapp', model='BlogPost')
permission = Permission.objects.create(codename='can_publish',
                                       name='Can Publish Posts',
                                       content_type=content_type)

Quelle

Meine Frage ist, wo dieser Code platziert werden soll. Offensichtlich sollten diese nur einmal erstellt werden, aber ich möchte es nicht in der Shell machen. Es scheint so, als müsste das irgendwo in einer Datei gespeichert werden. (Zur Dokumentation willen.)


Answer #1

Normalerweise reicht es aus, die erforderlichen Berechtigungen mit dem met -Attribut für die Berechtigungen der entsprechenden Modellklasse hinzuzufügen.

Dies ist aus der offiziellen Dokumentation :

class Task(models.Model):
    ...
    class Meta:
        permissions = (
            ("view_task", "Can see available tasks"),
            ("change_task_status", "Can change the status of tasks"),
            ("close_task", "Can remove a task by setting its status as closed"),
        )




permissions