Переход на другую базу данных в Django
У меня есть проект django, который был создан на базе данных Oracle, и я хочу перейти на ДРУГУЮ базу данных Oracle. Я следовал этому руководству https://pythonfusion.com/switch-database-django/, но есть проблема, что не все модели изначально создаются в Django, некоторые создаются с помощью inspectdb на существующих таблицах в других базах данных. Поэтому при использовании команды migrate --database=new я получаю ошибки о тех таблицах, которые уже существовали до создания Django. Есть ли способ перенести только те модели и таблицы, которые необходимы для работы Django? (users, auth...)
Думаю, вам нужно посмотреть на атрибут managed каждого мета-класса модели. Если managed равен true, то django будет изменять модель в базе данных.
Неуправляемая модель :
class MyModel(models.Model):
...
class Meta:
managed = False # This means django will ignore MyModel when migrating
Управляемая модель :
class MyManagedModel(models.Model):
...
class Meta:
managed = True # This means django will migrate MyManagedModel
Дополнительная документация здесь : https://docs.djangoproject.com/en/4.1/ref/models/options/
Да, вы определенно можете настроить поведение миграции, команда python manage.py makemigrations создает пару файлов, которые используются для миграции ваших моделей в вашу БД, любой человек может получить доступ к этим файлам и выбрать, что именно включать, исключать и даже редактировать их.
Проверьте следующую ссылку: https://dev.to/koladev/writing-custom-migrations-in-django-3eli
Если я правильно понял ваш вопрос, то вы хотите использовать встроенные миграции Django. Чтобы узнать, какие миграции были запущены для вашей новой базы данных, выполните команду manage.py showmigrations --database=new
, которая покажет вам список всех миграций, существующих в контексте вашего приложения.
После этого вы можете вручную запустить нужные миграции (например, auth
и contenttypes
), выполнив команду manage.py migrate --database=new app_label migration_name
.
showmigrations
команда: https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-showmigrations.
migrate
команда: https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-migrate