将应用模型保存在一个文件中或将每个文件分成新文件?

时间:2012-05-01 17:22:38

标签: django django-models

我正在阅读以下代码,models的结构使得每个类/模型都有一个单独的文件,然后在__init__.py中导入。例如:

# __init__.py
from service            import Service
from note               import Note
etc...

# service.py (one example of the imports)
from django.db import models

class Service(models.Model):

    #: service provider name (e.g. Hulu)
    name                = models.CharField(max_length=64, verbose_name="Title Name", unique=True)

    def __unicode__(self):
        return u'Service id=%s, name=%s' % (self.pk, self.name)

哪种方式更好的做法,将所有模型放在一个models.py文件中,或者每个模型有一个文件?我通常会将一个应用程序的所有模型保存在一个文件中,而且我从未见过将模型分开,这就是我提出这个问题的原因。

2 个答案:

答案 0 :(得分:2)

如果您正在谈论真正的“最佳实践”,那将遵循Django推荐的方式并仅使用models.py。但是,本主题中有很多意见和论点。不过,我的建议是:

如果你有一个简单的应用程序,只有几个型号。坚持使用models.py的“Django-way”。

如果你有一个包含大量模型和数千行代码的庞大应用程序,那么将其分解可能会更好。但是,在这一点上,您还应该问问自己为什么您的应用程序如此庞大,如果有任何东西可以分解到辅助应用程序中。

长短不一,我个人的观点是,将模型分解为单独的文件从不是一个好主意。在某些情况下它可能会导致问题,老实说,我无法看到一个真正合理的用例。通常情况下,如果您的应用程序足够大,可以保证这样做,那么实际上这表明您将太多功能集中在一起,可以更好地委托给其他应用程序。

答案 1 :(得分:1)

最佳做法是将它们放在一个文件中。以django源为例。

你从未见过它的原因是因为它几乎从未完成过。

如果你能以某种方式证明它,那么一定要做,但它绝对不是推荐的结构。当文件太大/可以在逻辑上分离时,人们开始探索拆分模型。