我想创建创建权限和组的数据迁移,以便我的其他开发人员可以运行迁移并设置所有内容。我能够创建迁移并很好地运行它们,但是现在我在运行测试时遇到错误。
但如果我这样做:
from django.contrib.auth.models import Group
def add_operations_group(apps, schema_editor):
Group.objects.get_or_create(name='operations')
我得到:
django.db.utils.OperationalError: no such table: auth_group
如果我这样做:
def add_operations_group(apps, schema_editor):
Group = apps.get_model("django.contrib.auth", "group")
Group.objects.get_or_create(name='operations')
我得到:
LookupError: No installed app with label 'django.contrib.auth'
有没有办法做到这一点?或者是否有“Django 方式”来确保创建权限和组等内容?
最佳答案
这就是我的做法:
from django.db import models, migrations
def apply_migration(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
Group.objects.bulk_create([
Group(name=u'group1'),
Group(name=u'group2'),
Group(name=u'group3'),
])
def revert_migration(apps, schema_editor):
Group = apps.get_model('auth', 'Group')
Group.objects.filter(
name__in=[
u'group1',
u'group2',
u'group3',
]
).delete()
class Migration(migrations.Migration):
dependencies = [
('someapp', 'XXXX_some_migration'),
]
operations = [
migrations.RunPython(apply_migration, revert_migration)
]
虽然,必须有一种更 Djangonic 的方式。
关于django - 创建创建组的django数据迁移的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33485464/