Как в Django admin создавать Группы с разрешениями для моделей программно? - PullRequest
2 голосов
/ 07 февраля 2020

Я хочу создать две группы «Драйвер» и «Администратор». Каждая группа должна иметь права доступа по умолчанию для моделей.

" Администратор " может добавлять, удалять и просматривать определенные модели.

" Драйвер"можно просто добавлять и просматривать определенные модели.

Каков наилучший подход для достижения этой цели?

1 Ответ

1 голос
/ 07 февраля 2020

Это зависит от действия в вашем проекте, которое приводит к созданию этих групп. Я могу догадаться, вы хотите создать эти группы один раз, когда вы развертываете свой проект без необходимости заходить в админ-панель и создавать группы вручную. Если это так, я бы порекомендовал вам попробовать RunPython миграцию для него: https://docs.djangoproject.com/en/3.0/ref/migration-operations/#django .db.migrations.operations.Run Python

Также вам нужно будет поработать с модель Group: https://docs.djangoproject.com/en/3.0/ref/contrib/auth/

Быстрый пример миграции будет выглядеть так:

from django.db import migrations


def forwards_func(apps, schema_editor):
    Group = apps.get_model("django.contrib.auth", "Group")
    # Create the groups you need here...


def reverse_func(apps, schema_editor):
    Group = apps.get_model("django.contrib.auth", "Group")
    # Delete the groups you need here...


class Migration(migrations.Migration):

    dependencies = []

    operations = [
        migrations.RunPython(forwards_func, reverse_func),
    ]

Создание новой пустой миграции доступно командой :

python manage.py makemigrations myapp --empty
...