首选Django应用程序架构

时间:2016-10-12 15:37:33

标签: django django-models

我对Django来说有点新鲜,而且在制作模型的过程中我遇到了麻烦,它是自己的应用程序与拥有许多模型的应用程序。

例如。说我正在创建一个请愿项目。用户可以创建请求,为其分配原因和收件人。在请愿页面上会有一个表格,有人可以添加签名。当满足足够的签名时,请愿书将被视为胜利。

潜在模特: 用户 请愿 接受者 签名 原因

我的问题:这些应该是每个都有自己的个人应用程序,或者我应该只有一个用户应用程序和请愿应用程序与签名,原因和&收件人是请愿应用程序中的模型?您将如何处理这个项目架构?

2 个答案:

答案 0 :(得分:2)

Two Scoops of Django建议将模型分解为单独的应用程序,这是我多年来一直遵循的模式,并且没有任何问题。直到最近,我才开始创建一个core应用程序,我将所有模型(以及常用功能)放入models/目录,并在目录中将每个模型放在自己的单个文件中。在开始一个项目时,我特别喜欢这种新模式,因为很难说出放置每个模型的最佳位置。我在工作期间多次遇到这个问题,我把模型放在一个地方,只有在项目成熟后才知道它可以而且应该在不同的位置。我对模型的序列化器使用相同的方法,除了我将它们放在api应用程序中,在app中我有另一个serializers/目录。

我更喜欢这种方法的另一个原因是因为我认为一般来说它更清洁。而不是有5行代码用于导入模型:

from app1.models import App1Model
from app2.models import App2Model
from app3.models import App3Model
from app4.models import App4Model
from app5.models import App5Model

App1Model.objects.create(...)

您可以在一行中导入所有模型:

from core import models as core_models

core_models.App1Model.objects.create(...)

答案 1 :(得分:0)

对我来说,我会在一个应用程序中将相关模型(在分离时不会有用)组合在一起。

在您的示例中,您有: 请愿, 请愿的原因和 这份请愿书的签名

单独使用时,这些模型中的任何一种都是无用的。 (即没有理由不能请愿,没有请愿就没有理由)。

另一方面,用户模型不要求请求有用,它可以在项目的其他部分使用,因此我将它保持独立。

如果收件人在请愿之外没有用例并且只在那里引用,我也会将其添加到请愿模型中。我打电话给应用程序请愿书。

如果你正在制作一个关于请愿的简单应用程序并且不会扩展,那么我的评论可能没有多大意义,事实上我认为你为这么简单做的事情并不重要应用