2015-11-02 33 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