Интеграция Django с унаследованной базой данных

Несмотря на то, что Django нацелена на разработку новых приложений, довольно несложно подключить к ней базу данных, унаследованную от другого проекта. Django предоставляет ряд утилит для автоматизации данного процесса, насколько это возможно.

Этот документ предполагает, что вы знакомы с основами Django, которые описаны в учебнике.

После настройки Django следуйте стандартному процессу для интеграции с существующей базой данных.

Предоставьте Django параметры вашей базы данных

Вам потребуется указать параметры соединения с вашей базой данных и её имя. Делается это редактированием параметра DATABASES, указав значения для следующих ключей соединения 'default':

Автоматическая генерация моделей

Django представляет утилиту inspectdb, которая может создавать модели по существующей базе данных. Вы можете посмотреть результат, запустив следующую команду:

$ python manage.py inspectdb

Сохраните его в файл, используя стандартный механизм перенаправления Unix:

$ python manage.py inspectdb > models.py

Такой подход является вспомогательными. Обратитесь к документации на inspectdb для подробностей.

После приведения моделей в нормальный вид, сохраните их в файле models.py, разместив его в пакете, который хранит ваше приложение. Затем добавьте ваше приложение в INSTALLED_APPS.

По умолчанию inspectdb создает модели с managed = False в классе Meta. Это указывает Django не управлять созданием, изменением и удалением таблицей модели:

class Person(models.Model):
    id = models.IntegerField(primary_key=True)
    first_name = models.CharField(max_length=70)
    class Meta:
       managed = False
       db_table = 'CENSUS_PERSONS'

If you do want to allow Django to manage the table’s lifecycle, you’ll need to change the managed option above to True (or remove it because True is its default value).

Установка основных таблиц Django

Теперь, запустите команду migrate для добавления в базу данных необходимых записей, таких как права пользователей и типы контента:

$ python manage.py migrate

Тестирование и настройка

Это были основные шаги. Теперь вам может потребоваться изменить созданные модели, чтобы они работали так, как вам необходимо. Попробуйте обратиться к данным через API баз данных Django, отредактировать их с помощью интерфейса администратора или изменить сам файл с моделями.