Ответ 1
Мне рекомендовали этот способ сделать это:
Создайте фальшивую миграцию в соответствующем модуле:
python manage.py makemigrations --empty yourappname
Откройте созданный файл, который должен выглядеть следующим образом:
# -*- coding: utf-8 -*-
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
]
operations = [
]
И добавьте свой код:
# -*- coding: utf-8 -*-
from django.db import models, migrations
def add_group_permissions():
#read_only
group, created = Group.objects.get_or_create(name='read_only')
if created:
group.permissions.add(can_read_campaign)
logger.info('read_only_user Group created')
#standard
group, created = Group.objects.get_or_create(name='standard_user')
if created:
group.permissions.add(can_edit_users)
logger.info('standard_user Group created')
#admin
group, created = Group.objects.get_or_create(name='admin_user')
if created:
group.permissions.add(can_edit_campaign, can_edit_users)
logger.info('admin_user Group created')
class Migration(migrations.Migration):
dependencies = [
('yourappname', '0001_initial'),
]
operations = [
migrations.RunPython(add_group_permissions),
]
Наконец, запустите миграцию:
python manage.py migrate
Это хорошо, потому что вы можете развертывать в Heroku или где угодно и быть уверенным, что он будет применен, поскольку это просто еще одна миграция.