Django中存储在不同数据库中的模型之间可能存在关系吗?

Posted

技术标签:

【中文标题】Django中存储在不同数据库中的模型之间可能存在关系吗?【英文标题】:It's possible to have relationships between models stored in different databases in Django? 【发布时间】:2021-12-19 23:51:09 【问题描述】:

我目前正在处理一个项目,我同时处理公共和私人信息,两者都作为不同的模型存储在一个公共数据库中。

我想将此数据库一分为二,一个用于私有模型对象,另一个用于公共模型对象。

问题是,这两个模型彼此之间都有 ForeignKey 关系,我在互联网上发现了相互矛盾的答案,即即使模型位于两个不同的数据库中,这种关系是否也可以工作。

那么,这可能吗?有没有更好的方法来做到这一点?

为了澄清我为什么要这样做,我希望项目是开源的,因此公共数据库应该是公开的,但敏感信息(用户和密码)应该保密。

【问题讨论】:

【参考方案1】:

来自 Django docs:

Django 目前不支持外键或跨多个数据库的多对多关系。如果您使用路由器将模型分区到不同的数据库,则这些模型定义的任何外键和多对多关系都必须在单个数据库的内部。

这是因为参照完整性。为了维护两个对象之间的关系,Django 需要知道相关对象的主键是有效的。如果主键存储在单独的数据库中,则无法轻松评估主键的有效性。

有关可能的解决方案,请查看此讨论:https://***.com/a/32078727/14209813

【讨论】:

以上是关于Django中存储在不同数据库中的模型之间可能存在关系吗?的主要内容,如果未能解决你的问题,请参考以下文章

django框架之模型

Django 中的时区

Django框架-Django模型(models)系统

Django之模型ORM

Django04-模型系统model

Django模型和ORM