在 Django 管理中注册 SQL-table

Register SQL-table in Django admin

如果我有一个包含 Django 模型和其他 SQL 表的 PostgresDB,是否可以在 Django 管理面板中注册这些其他 SQL 表?

有关设置的更多详细信息: 我有一个 docker-compose 设置,其中 Django 在一个容器中为 运行,在另一个容器中为 Postgres DB,在第三个容器中为 slack-app。 Django 连接到数据库,模型在管理面板中注册。这按预期工作。 slack-app 也连接到同一个数据库,并且那里有一些不是 Django 模型的表。我还想通过 Django 管理面板访问这些,以便将所有内容集中在一个地方。这可能吗?

您可以在 Django 中定义 unmanaged 模型。这些模型将 不会 构造迁移,但只会查询数据库以 select、插入等

Django 提供了一个工具 inspectdb [Django-doc] 来检查数据库并编写相应的未管理模型。因此,您可以将其用于:

python3 manage.py inspectdb table<sub>1</sub> table<sub>2</sub> table<sub>n</sub>

然后会将这些表对应的模型写到标准输出通道,这样你就可以在models.py中复制这些了。在这些模型的Meta中会添加一个managed = False表示Django不会迁移这些模型。

注册这些模型后,您可以通过以下方式注册 ModelAdmin

from django.contrib import admin
from <i>app_name</i>.models import Model<sub>1</sub>, Model<sub>2</sub>, Model<sub>n</sub>

admin.site.register(Model<sub>1</sub>)
admin.site.register(Model<sub>2</sub>)
admin.site.register(Model<sub>n</sub>)