我有两个不同的Django项目,它们可以并行运行并完成不同的事情。
但是他们需要共享一个公共数据库表,Client表..
两个项目都包含多个需要包含映射到该客户端模型的外键的应用程序。
我不确定什么是最好的方法..
答案 0 :(得分:5)
假设两个项目都在同一个数据库上运行,只需导入要引用的模型。
from first_project.some_app.models import Client, OtherSharedModel
class SomeModelInSecondProject(models.Model):
client = models.ForeignKey(Client)
答案 1 :(得分:4)
不幸的是,Django对多个数据库的支持不支持cross-database relations。你可以在其中一个系统上假装这个(比如引用表,但是自己处理密钥refs),但你需要非常小心地记录你正在做的事情,以确保你在app中保持参照完整性。正在'假装'它。
答案 2 :(得分:0)
我还没有对它进行测试,但另一个替代方案是,如果您共享同一个数据库并在同一服务器中同时拥有这两个项目,则只需将它们合并到一个项目中,将它们的应用程序组织在不同的目录中,如果必须,您可以使用两个不同的设置文件。请参阅与此相关的问题:How to keep all my django applications in specific folder。它只是一种不同的方法,不需要您引用不同的项目(我不确定它是多么值得推荐)。