在 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>)
如果我有一个包含 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>)