在两个不同的 Django 项目之间共享模型

Posted

技术标签:

【中文标题】在两个不同的 Django 项目之间共享模型【英文标题】:Share Models Between Two Different Django Projects 【发布时间】:2022-01-06 01:45:13 【问题描述】:

我有两个不同的 Django 项目,它们应该使用完全相同的数据库和相同的模型并在不同的服务器上工作。我不想在两个应用程序中定义相同的模型两次,因为模型可能会发生变化,并且应该在双方都进行更改。定义一次模型并在两个项目中使用相同模型的最佳解决方案是什么?

【问题讨论】:

【参考方案1】:

我需要一种类似的方法来访问其他一些 django 项目的遗留数据库。我用常用的模型和方法构建了一个普通的django项目。接下来,在其他项目中,在我的settings_local.py 文件的顶部,我将这个公共项目添加到python 路径中:

import os
import sys

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

sys.path.append(os.path.join(PROJECT_ROOT, 'my', 'relative', 'path', 'to', 'common_project'))

然后将common项目中的apps添加到依赖others中的INSTALLED_APPS

所以,我可以轻松导入这些常用模型:

from common_project.app.models import MyModel

【讨论】:

问题是,这些项目将在不同的服务器上运行。所以我无法将路径添加到 python 路径。 @TalhaEryasar,您需要在这些服务器上上传公共项目。想法是将通用代码保存在单独且可控的源中,不会在所有项目中重复,并且易于将来维护。

以上是关于在两个不同的 Django 项目之间共享模型的主要内容,如果未能解决你的问题,请参考以下文章

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

Django 相关模型无法解析

在多个 WCF 服务之间共享类

Visual Studios - 在不同项目之间共享文件夹

C# - 在项目之间共享资源文件

如何在两个模块之间共享数据库模型?