2012-05-01 2 views
0

다음 코드를 읽었으며 models은 각 클래스/모델에 별도의 파일이 있고 __init__.py에 가져온 구조로되어 있습니다. 예를 들어 :app-models을 하나의 파일로 유지하거나 각각을 새 파일로 분리 하시겠습니까?

# __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 파일의 모든 모델을 가지고, 또는 하나 개의 파일 당 모델을 가지고? 나는 보통 하나의 파일에 모든 모델을 보관하고 있으며 모델을 구분하는 것을 본 적이 없다. 그래서 나는이 질문을하고있다.

+0

하나의 파일이 너무 좁아 논리의 단일 응용 프로그램에 속하는 모델이 아닌 경우 다른 파일에 저장하는 것이 좋습니다. – okm

답변

1

모범 사례는 파일 하나에 넣는 것입니다. 예를 들어 장고 소스를보십시오.

실제로 본 적이없는 이유는 실제적으로 완료되지 않았기 때문입니다.

어떻게 든 그것을 정당화 할 수 있다면 꼭 해보십시오.하지만 확실히 권장 구조는 아닙니다. 파일이 너무 커지거나 논리적으로 분리 될 때 사람들은 분할 모델을 탐색하기 시작합니다.

2

사실 "모범 사례"라고 말하면 장고가 권장하고 models.py 만 사용하는 방식을 따릅니다. 그러나이 주제에 대한 많은 의견과 논거가 있습니다. 그럼에도 불구하고 내 권장 사항 :

간단한 응용 프로그램이있는 경우 몇 가지 모델 만 있습니다. model.py의 "Django-way"를 고수하십시오.

많은 모델과 수천 줄의 코드가 포함 된 거대한 앱을 가지고 있다면, 아마 더 잘 나올 것입니다. 그러나,이 시점에서, 당신은 또한 당신의 앱이 왜 거대하고 어떤 것이 보조 애플리케이션으로 고려 될 수 있는지 스스로에게 물어야합니다.

길고 짧게, 개인적인 의견은 모델을 별도의 파일로 분리하는 것이 이 아님을 의미합니다. 좋은 생각입니다. 어떤 경우에는 문제가 발생할 수 있으며 솔직히 정당한 유스 케이스를 볼 수 없습니다. 일반적으로 앱이이 작업을 수행 할만큼 충분히 크면 실제로 다른 앱에 위임 할 수있는 너무 많은 기능을 함께 사용하고 있다는 신호입니다.

관련 문제