2015-11-02 60 views
0

我想创建创建权限和组的数据迁移,这样我的其他开发人员就可以运行迁移并完成所有设置。我能够创建迁移并运行它们,但现在运行我的测试时出现错误。正确的方式来创建一个Django的数据迁移,创建一个组?

但是,如果我这样做:

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方式”来确保权限和组创建?

回答

0

这是我要做的事:

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方式。

+0

Drat。我尝试了你的方式,并且我仍然从“django.conf导入设置 类迁移(migrations.Migration): 依赖关系=迁移migrations.swappable_dependency(设置)'仍没有安装带有标签'auth'的应用程序' –

+0

' AUTH_USER_MODEL), ('someapp','XXXX_some_migration'), ]'在依赖关系中添加对django auth模型的引用 – mithuntnt