Como adicionar uma permissão a um usuário / grupo durante uma migração do django?

Eu gostaria de executar a seguinte migração:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.auth.models import Permission
from django.db import migrations
from django.conf import settings
from django.contrib.auth.models import Group, User


def add_api_group(apps, schema_editor):

    Group.objects.create(name=settings.API_USER_GROUP)
    # get_or_create returns a tuple, not a Group
    group = Group.objects.get(name=settings.API_USER_GROUP)
    permissions = Permission.objects.filter(codename__in = [
        'add_topic',
    ])
    group.permissions.add(*permissions)


def add_api_user(apps, schema_editor):

    user = User.objects.create_user(username=settings.API_USER, password=settings.API_USER_PASSWORD)
    group = Group.objects.get(name=settings.API_USER_GROUP)
    user.groups.add(group)

class Migration(migrations.Migration):

    dependencies = [
        ('nd_content', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(add_api_group),
        migrations.RunPython(add_api_user)
    ]

Na última linha da migração, emiti um erro para interromper a execução e examinar o estado do banco de dados. O problema é a mesaauth_permission ainda não possui as permissões de um modelo de outro módulo, embora esse outro módulo esteja registrado como uma dependência dessa migração.

Posso confirmar que as permissões ausentes parecem ser adicionadas somente depois que todas as migrações foram executadas.

questionAnswers(2)

yourAnswerToTheQuestion