Регистрация 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)
Вернуться на верх