2012-05-01 1 views
0

私は次のコードを読んでいました。modelsは、各クラス/モデルが別々のファイルを持ち、__init__.pyにインポートされるように構成されていました。例えば:1 models.pyファイル内のすべてのモデルを持っている、または1つのファイルあたりのモデルを持っている方が良い練習、ある方法app-modelsを1つのファイルに保存するか、またはそれぞれを新しいファイルに分割しますか?

# __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) 

?私は通常、すべてのモデルを1つのファイルに保存しています。モデルを分けたことは一度もありませんでした。そのため、私はこの質問をしています。

+0

論理的に1つのアプリケーションに属しているモデルで1つのファイルが狭すぎる場合は、異なるファイルに配置する方がよいでしょう。 – okm

答えて

1

ベストプラクティスは1つのファイルに入れることです。たとえば、djangoのソースを見てください。

あなたがそれを見たことがない理由は、実際には行われていないためです。

何とかそれを正当化することができれば、どうしてもそれをすることができますが、それは間違いなく推奨構造ではありません。ファイルが大きくなり過ぎたり、論理的に分離されたりすると、人々は分割モデルを探索し始めます。

2

真の "ベストプラクティス"と言えば、これはDjangoの推奨する方法とmodels.pyの使用方法に従います。しかし、このトピックには多くの意見と議論があります。それにもかかわらず、私の推奨事項:

単純なアプリケーションをお持ちの場合は、わずかなモデルしかありません。 models.pyの "Django-way"を使ってください。

モデルがたくさんあり、コードが何千行もある巨大なアプリを持っている場合は、それを分割するのがおそらく良いでしょう。しかし、現時点では、あなたのアプリがなぜ巨大で、何かを補助アプリに組み込むことができるかどうかを尋ねるべきです。

私の個人的な意見では、モデルを別々のファイルに分割することは、でないことがありません。良いアイデアです。場合によっては問題を引き起こす可能性があり、正当に正当な理由があるユースケースを見ることはできません。通常、あなたのアプリがこれを保証するのに十分な大きさであれば、それは実際にあなたが他のアプリに委託されているようにあまりに多くの機能をまとめているという兆候です。

関連する問題