Какой метод есть в миграции для запуска кода Python
Python
Junior
Без компании
Какой метод есть в миграции для запуска кода Python
Ответы
Для выполнения произвольного кода Python в миграциях Django используется метод `RunPython`. Он принимает два аргумента - функции для применения (`forward_func`) и отмены (`reverse_func`) миграции.
Пример:
```
from django.db import migrations
def create_initial_data(apps, schema_editor):
# Получаем модель из исторической версии
MyModel = apps.get_model('myapp', 'MyModel')
# Создаем объекты
MyModel.objects.create(name='Test')
def reverse_create_initial_data(apps, schema_editor):
# Удаляем созданные объекты
MyModel = apps.get_model('myapp', 'MyModel')
MyModel.objects.filter(name='Test').delete()
class Migration(migrations.Migration):
dependencies = [...]
operations = [
migrations.RunPython(
create_initial_data,
reverse_create_initial_data
),
]
```
Важно: всегда используйте `apps.get_model()` вместо прямого импорта моделей, так как миграции работают с историческими версиями моделей.