django - 创建创建组的django数据迁移的正确方法?

标签 django django-migrations

我想创建创建权限和组的数据迁移,以便我的其他开发人员可以运行迁移并设置所有内容。我能够创建迁移并很好地运行它们,但是现在我在运行测试时遇到错误。

但如果我这样做:

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/

相关文章:

mysql - Django db_index=True 迁移后不创建索引

python - 将 Parse.com 密码迁移到 Django

python - 在 CentOS 上安装 M2Crypto 时遇到问题

python - 如何从 django 前端定时安排任务?

python - 如何将 pandas 数据框转换为 json 以在 django 模板中使用

python - 卸载应用程序 A,因为应用程序 B 在一次旧迁移中具有依赖项

Django没有这样的表: django_site after deleting migrations and database

django-migrations - 在迁移中移动 Wagtail 页面

每个请求调用 Django 自定义上下文处理器两次

python - 在django中迁移模型时如何解决SQLdecode错误?