Back to questions
Junior — Middle
67
Есть ли у вас опыт создания собственных миграций в Django для управления изменениями базы данных?
Answer from AI
sobes.tech AI
Да, в проектах на Django я создавал собственные миграции для управления изменениями в базе данных. Обычно Django автоматически генерирует миграции, но иногда требуется написать миграцию вручную, например, для сложных изменений или данных.
Пример создания собственной миграции:
- Создаёте файл миграции в папке migrations вашего приложения.
- Определяете класс миграции с методами
operations, где можно использоватьRunPythonдля выполнения произвольного кода.
from django.db import migrations
def forwards_func(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
MyModel.objects.create(name='Example')
def backwards_func(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
MyModel.objects.filter(name='Example').delete()
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
operations = [
migrations.RunPython(forwards_func, backwards_func),
]
Такой подход позволяет контролировать миграции более гибко, включая изменение данных, а не только структуры базы.