Сначала создайте собственный класс.
from django.db import router
class CustomRunPython(migrations.RunPython):
def __init__(self, *args, **kwargs):
self.context = kwargs.pop('context', {})
super().__init__(*args, **kwargs)
def database_forwards(self, app_label, schema_editor, from_state, to_state):
from_state.clear_delayed_apps_cache()
if router.allow_migrate(schema_editor.connection.alias, app_label, **self.hints):
self.code(from_state.apps, schema_editor, **self.context)
Примечание: Здесь мы используем context
в качестве параметра инициализации, который, как ожидается, будет dict
object.
и теперь используйте этот новый CustomRunPython
в своем файле миграции и передайте context data,
class Migration(migrations.Migration):
operations = [
CustomRunPython(add_groups, <b>context={'groups': ["Test Group"]}</b>),
]
и теперь измените вашу функцию пересылки , чтобы принять контекст,
def add_groups(apps, schema_editor,<b> **context</b>):
<b>groups = context['groups']</b>
for group in <b>groups</b>:
group, created = Group.objects.get_or_create(name=group)
if created:
print(f'Adding group {group}')