首页 > 解决方案 > 将 Django 模型与已创建的数据库表一起使用

问题描述

data_db我有一个包含一些表的数据库(让我们称之为)。我想创建一个仪表板来显示来自 的数据data_db,因此我为此创建了一个 Django 项目。

当我想从其中的一个表中获取数据时data_db,有没有办法做到这一点Models?(我想要使用 DB 进行 Django 安全管理)还是必须使用原始 SQL?

注意: ' 表中存在现有数据data_db,我不想在默认 Django DB 上创建具有相同数据的新表。我还使用了 2 个数据库,Django 默认数据库,data_db并且我创建了一个数据库路由器,data_db以防止 Django 在其中创建所有表。

谢谢。

标签: pythondjango

解决方案


的。事实上,Django 甚至可以帮助您创建模型。没有借助 Django 迁移的模型是非托管模型。这些managed = False在类中有一个属性Meta,所以类似于:

class MyModel(models.Model):
    # … fields …
    
    class Meta:
        managed = False

如果您因此编写这些非托管模型,则可以使用 Django ORM 进行查询,而 Django 不会尝试为这些表创建新模型。

当然,指定与数据库匹配的模型很麻烦。因此 Django 经常可以根据表构建模型。您可以使用inspectdb命令 [Django-doc]生成模型。

您可以在 with 上生成这些模型stdout

python3 manage.py inspectdb

或者您可以通过 I/O 重定向将这些保存到文件中:

python3 manage.py inspectdb > app_name/models.py

推荐阅读