2009-12-11 12 views
7

Where should Django manager code live?へのモノクロームの解答を読み終えたら、大きなmodels.pyを小さく管理しやすいファイルに分割することに決めました。私は__init__.pyでフォルダ構造Djangoアプリのリファクタリングlarge models.pyファイル

foodapp/ 
    models/ 
     __init__.py #contains pizza model 
     morefood.py #contains hamburger & hotdog models 

を使用しています、私はしかし

from morefood import hamburger, hotdog 

、私はpython manage.py syncdbを実行すると、作成した表だけがfoodapp_pizzaあるとmorefood.pyからモデルをインポートする - 私がするには何が必要です私がmorefood.pyからインポートしたモデルのテーブルを作成するDjangoを取得するには?

 
foodapp/ 
    __init__.py 
    models.py 
    /morefood 
     __init__.py 
     hamburger.py 
     hotdog.py 

をしてmodels.pyで次の操作を行います:

+1

で動作します誰もがファイルも、」どのように大規模のさまざまなアイデアを持っています大規模なものですが、一般的に私は、アプリがmodels.pyのリファクタリングを必要とする場合、それは一般に「ただ一つのこと」をしていないアプリを指し、それは複数のアプリにリファクタリングする必要があるアプリそのものです。ちょっとした考え。 –

+0

以下の両方の回答がうまく機能します。私はkibitzerのほうが少し好きです。モデルフォルダにすべてのモデルを保存することができます。私はBaresiが言及したブログ記事に記載されているチケット(http://code.djangoproject.com/ticket/6961)に注目します。 – Alasdair

+0

@Carl - 良い点。この特定のケースでは、私は2つにアプリを分割終了しました。 – Alasdair

答えて

3

それとも、あなたのmorefood.pyモデルで、メタに次の行を追加します。

class Meta: 
    app_label = 'foodapp' 

その後syncdbの実行は、既存の構造

7

これを試してみてください

from foodapp.morefood.hamburger import * 
from foodapp.morefood.hotdog import * 

this blogpostで提案されているように。

+1

ブログの投稿は現在404ですが、この記事は同じ内容であるようです:http://www.justinlilly.com/this-and-that/fitures_model_subdir.html – scwagner

関連する問題