两个Django项目和一个数据库

两个Django项目和一个数据库,django,Django,我用Django构建了一个所有客户都使用的仪表板。我想为自己建立一个内部仪表板,以便监控他们的活动。它应该连接到与仪表板相同的数据库。我有一个关于如何做到这一点的问题: 我是否只需在settings.py中添加相同的数据库,然后在内部仪表板中重新定义模型 谢谢!如果有更好的方法,请告诉我 多个Django项目可以共享单个数据库。这没有害处。唯一需要记住的是,为了简单起见,只有一个项目应该运行迁移 通过从原始应用程序运行以下命令,可以为内部应用程序生成models.py文件 python mana

我用Django构建了一个所有客户都使用的仪表板。我想为自己建立一个内部仪表板,以便监控他们的活动。它应该连接到与仪表板相同的数据库。我有一个关于如何做到这一点的问题:

我是否只需在
settings.py中添加相同的数据库,然后在内部仪表板中重新定义模型


谢谢!如果有更好的方法,请告诉我

多个Django项目可以共享单个数据库。这没有害处。唯一需要记住的是,为了简单起见,只有一个项目应该运行迁移

通过从原始应用程序运行以下命令,可以为内部应用程序生成
models.py
文件

python manage.py inspectdb>models.py
这允许您从现有数据库生成Django模型文件。默认情况下,
inspectdb
使用
Model.Meta.managed=False
生成模型,即使用生成模型的特定应用程序不负责创建、删除或更新数据库表。对于生成的模型,您可能需要配置关系,因为,
inspectdb
将所有关系生成为
ForeignKey
,并通过
表生成
,以维护关系。您可能还需要根据您的要求提供相关的名称


总之,您可以在多个django项目中使用相同的数据库。多个Django项目可以共享单个数据库。这没有害处。唯一需要记住的是,为了简单起见,只有一个项目应该运行迁移

通过从原始应用程序运行以下命令,可以为内部应用程序生成
models.py
文件

python manage.py inspectdb>models.py
这允许您从现有数据库生成Django模型文件。默认情况下,
inspectdb
使用
Model.Meta.managed=False
生成模型,即使用生成模型的特定应用程序不负责创建、删除或更新数据库表。对于生成的模型,您可能需要配置关系,因为,
inspectdb
将所有关系生成为
ForeignKey
,并通过
表生成
,以维护关系。您可能还需要根据您的要求提供相关的名称



总之,您可以在多个django项目中使用相同的数据库。有关详细信息,请参见

中的内容,有几种方法可供选择。连接到同一个数据库并复制所有内容是可能的,但远不是最优的。您还可以对这两个站点使用相同的代码库,并使用Django站点系统来拆分站点。或者你可以为你的内部仪表板制作一个单独的应用程序,安装在两个站点上。或者,您可以从内部仪表板应用程序导入一个(或两个?)应用程序以避免复制。为什么不向同一个django项目添加一个额外的应用程序?应用程序的概念完全是在同一个项目中定义多个实体。@Wolph我明白了,这里最好的选择是使用Django站点吗?这里也可以更改域吗?还是必须分离负载平衡器?谢谢@WillemVanOnsem在添加额外的应用程序时,我会像Wolph提到的那样使用Django站点吗?Django站点系统主要假设您有一个用于多个站点的代码库。这意味着相同的应用程序、相同的数据库、相同的url结构。但是每个站点都可以有单独的域名。有几种方法可以做到这一点。连接到同一个数据库并复制所有内容是可能的,但远不是最优的。您还可以对这两个站点使用相同的代码库,并使用Django站点系统来拆分站点。或者你可以为你的内部仪表板制作一个单独的应用程序,安装在两个站点上。或者,您可以从内部仪表板应用程序导入一个(或两个?)应用程序以避免复制。为什么不向同一个django项目添加一个额外的应用程序?应用程序的概念完全是在同一个项目中定义多个实体。@Wolph我明白了,这里最好的选择是使用Django站点吗?这里也可以更改域吗?还是必须分离负载平衡器?谢谢@WillemVanOnsem在添加额外的应用程序时,我会像Wolph提到的那样使用Django站点吗?Django站点系统主要假设您有一个用于多个站点的代码库。这意味着相同的应用程序、相同的数据库、相同的url结构。但是每个站点都可以有单独的域名。非常感谢你的回答!按照上面的建议使用Django站点是更好还是更好?
Django站点
framework假设两个不同的域具有相同的代码库。在你的情况下,你想使用管理网站作为一个内部工具(我假设管理员不能从公共网络访问,在那里你必须做额外的工作来防止公共网络向你的管理员提出请求),上述共享数据库的方法似乎更合适。我明白了,只是确认一下,只要我的模型在主仪表板中发生变化,我就必须运行
inspectdb
命令?不。即使运行
inspectdb
一次也不是强制性的,你可以直接复制粘贴模型并设置
managed=False
。但是
inspectdb
在您无法访问原始模型或将项目与遗留数据库集成时将非常有用。好的,这很有意义。顺便问一下,
遗留数据库
意味着什么