Создание разрешений на уровне проекта при инициализации проекта - PullRequest
0 голосов
/ 15 февраля 2020

Когда я впервые запускаю manage.py migrate в проекте Django, я бы хотел, чтобы база данных была инициализирована с некоторыми дополнительными разрешениями. Я видел здесь , что это можно сделать на уровне приложения, в файлах apps.py. Однако разрешения, которые я хотел бы иметь, скорее связаны со всем проектом, чем с одним из его приложений.

Мои вопросы:

  • Можно ли определять разрешения на уровне проекта или разрешения предназначены для того, чтобы всегда быть частью приложения?
  • Если разрешения на уровне проекта в порядке, в каком месте их можно определить, чтобы они создавались при инициализации проекта?

1 Ответ

0 голосов
/ 15 февраля 2020

Для создания разрешения вам нужны ContentType, и они живут в приложениях, поэтому вы не можете создавать разрешения на уровне проекта. Разрешения должны быть созданы в каком-то приложении (все это приложение), и после установки приложения в вашем проекте вы сможете ссылаться на разрешение во всем проекте.

Поскольку разрешение связано с ContentType (модель) вы можете создать разрешение внутри вашей модели, например:

class SomeModelClass(models.Model):
    # ...
    class Meta:
        permissions = (
            ("can_drive", "Can drive"),
            ("can_vote", "Can vote in elections"),
            ("can_drink", "Can drink alcohol"),

Примечание: все модели имеют 4 разрешения по умолчанию

Другой способ создать ваше разрешение может быть программно где-то, может быть, сигнал, пользовательская миграция ... посмотрите здесь

...