Регистрация SQL-таблицы в админке Django
Если у меня есть PostgresDB, которая содержит как модели Django, так и другие таблицы SQL, возможно ли зарегистрировать эти другие таблицы SQL в панели администратора Django?
Подробнее о настройке: У меня есть docker-compose setup, где Django запущен в одном контейнере, Postgres DB в другом, и slack-app в третьем контейнере. Django подключен к БД, а модели зарегистрированы в панели администратора. Все работает как задумано. Slack-app также подключен к той же БД и имеет там несколько таблиц, которые не являются Django-моделями. Я хотел бы также получить доступ к ним через панель администратора Django, чтобы иметь все в одном месте. Возможно ли это?
В Django можно определить неуправляемые модели. Эти модели будут не строить миграции, а только запрашивать базу данных для выбора, вставки и т.д.
Django предлагает инструмент inspectdb
[Django-doc] для осмотра базы данных и записи соответствующих неизмененных моделей. Таким образом, вы можете использовать это с:
python3 manage.py inspectdb table1 table2 tablen
Затем он запишет соответствующие модели для этих таблиц в стандартный канал вывода, и вы сможете скопировать их в models.py
. В Meta
этих моделей он добавит managed = False
, чтобы обозначить, что Django не будет мигрировать эти модели.
После регистрации этих моделей, вы можете зарегистрировать ModelAdmin
с:
from django.contrib import admin
from app_name.models import Model1, Model2, Modeln
admin.site.register(Model1)
admin.site.register(Model2)
admin.site.register(Modeln)