我的项目包含几个需要以不同方式部署的django应用程序,可能在不同的机器上。然而,这些应用程序通常偶尔需要访问彼此的模型,所以我想要“外化”我的模型,以便可以从任何应用程序更优雅地访问它们。所以我的想法是让目录结构类似于这样:
/
+ application1
+ application2
+ models
是否有功能点(代码可维护性除外),因为应用程序可以相互交叉引用?
答案 0 :(得分:4)
django book中的以下段落让我觉得这可能不是一个好主意(我添加了粗体格式):
但是,关于应用程序约定有一个要求:如果您使用的是Django的数据库层(模型),则必须创建一个Django应用程序。 模特必须存在于应用内。因此,为了开始编写我们的模型,我们需要创建一个新的应用程序。
答案 1 :(得分:3)
以下内容不适合@ jcollado答案的评论,所以我会把它放在这里:
https://docs.djangoproject.com/en/dev/topics/db/models/#models-across-files
跨文件的模型
将模型与另一个应用程序中的模型相关联是完全可以的。为此,请在包含模型的模型顶部导入相关模型。然后,只需在需要的地方引用其他模型类。例如:
from geography.models import ZipCode
class Restaurant(models.Model):
# ...
zip_code = models.ForeignKey(ZipCode)
答案 2 :(得分:2)
我不认为这是一个特别好的主意,虽然我可以看到吸引力。如果您只想安装其中一个应用程序,那么您将包含很多未使用的模型。我认为最好将模型保存在与他们最相关的应用程序中。
这也可能使管理界面更加混乱。你在哪里注册模特管理员?您在哪里为模型进行管理员自定义?