在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。
你是否真的想成为另一个问题。