1つのファイルに定義するにはあまりにも大きくなりすぎたので、分割しようと思った。
いろいろ調べたところ、次の方法で実現できた。
最初は次のような構成になっている。
- project
- app
- models.py
- views.py
このmodels.pyに、demo1クラスとdemo2クラスがあるとすると、
次のようにして分割することができた。
- project
- app
- modelsディレクトリ
- __init__.py
- model1.py
- model2.py
- views.py
model1.pyに含まれるdemo1クラスは次のようにMetaクラスを定義し、app_labelに「app」の名前を定義する。
from django.db import models
class demo1(Models.model):
class Meta:
app_label = 'app'
... 通常の定義 ...
model2.pyに含まれるdemo2クラスは、demo1クラスと同じようにMetaクラスの定義とapp_labelの設定を行う。
from django.db import models
class demo2(Models.model):
class Meta:
app_label = 'app'
... 通常の定義 ...
最後にapp/models/__init__.py に、次の設定を追加する。
from model1 import demo1
from model2 import demo2
これで、manage.py syncdbしたときに、それぞれのモデルのテーブルが作成される。
注意点としては、ForeignKey()を利用するときには、対象のクラスを忘れないようにimportしないといけない。importを忘れると、syncdbしたときにエラーにならないけど、テーブルは作成されていない。
0 件のコメント:
コメントを投稿