在1个Django应用程序中约20个模型

我已经开始在本地运行浏览器的应用程序。 最近经历了django教程,我认为使用django而不是简单的python可能会更好。

有一个问题:我至less有20个型号,每个都有很多function。 很简单,它会创build一个巨大的模型文件,也可能是巨大的意见。 我怎么把它们分开?

模型是所有相关的,所以我不能简单地把它们分成不同的应用程序,我可以吗?

“我至less有20个模型” – 这可能是一个以上的Django“应用程序”,更像是一个Django“项目”,有几个小“应用程序”

我喜欢围绕有几个(1到5)模型的主题或主题区域进行分区。 这成为一个Django的“应用程序” – 是可重用性的有用单位。

整体“项目”是一个应用程序的集合,呈现由单独的部分组成的集成的东西。

这也有助于项目pipe理,因为每个“应用程序”可以在最后成为一个发布的冲刺。

这是一个相当常见的需求…我无法想象通过10000.000行长的models.py文件涉水:-)

你可以把models.py文件(和views.py文件)分解成一个pacakge文件。 在这种情况下,您的项目树将如下所示:

 /my_proj /myapp /models __init__.py person.py 

__init__.py文件使文件夹成为一个包。 唯一的问题是要确定为模型定义一个内部的Meta类,以指示模型的app_label,否则Django将难以构build模式:

 class Person(models.Model): name = models.CharField(max_length=128) class Meta: app_label = 'myapp' 

完成之后,将模型导入到__init__.py文件中,以便Django和sync db可以find它:

 from person import Person 

这样你仍然可以from myapp.models import Person

模型都是相关的,所以我不能简单地把它们分成不同的应用程序,我可以吗?

可以将它们分离成不同的应用程序 要从另一个应用程序的一个应用程序中使用模型,只需要导入django.contrib应用程序。

在一个应用程序中有20个模型可能是一个迹象,你应该把它分成小一些。

一个Django应用程序的目的是要有一个小的单一目的代码段,可以很好地融合在一起。

所以,如果你有一个电子商务网站,你可能有一个shopping_cart应用程序,一个帐单应用程序,等等。

请记住,根据对方,应用程序确实没有问题(尽pipe如果它们可以分离,总是更好),但是不应该有一个应用程序做两件非常不同的事情。

文章Django提示:布置一个应用程序可能会帮助你。 与往常一样,把你读的一切都用盐(包括这个答案)。

你可以分解多个文件的模型。 这也适用于视图。

可以将它们分成单独的文件,只需在主要的models.py字段顶部input。

你是否真的成为另一个问题。