2015-11-02 1 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. Я пробовал это по-своему, и я все еще получаю «не установленное приложение с меткой« auth »« –

+0

»из настроек импорта django.conf класс Migration (migrations.Migration): dependencies = [ dependencies = [ migrations.swappable_dependency (настройки. AUTH_USER_MODEL), ('someapp', 'XXXX_some_migration'), ] 'Добавить ссылку на модель django auth в зависимости – mithuntnt

Смежные вопросы