モデルをサブフォルダーに配置するために、ここで説明されている app_label メタ フィールドを使用しようとしました。
私のディレクトリ構造は次のようになります。
- 事業
- アプリ
- ふー
- モデル
- __init__.py
- bar_model.py
- モデル
- ふー
- アプリ
bar_model.py で、次のようにモデルを定義します。
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
次のようにモデルを正常にインポートできます。
from apps.foo.models.bar_model import SomeModel
ただし、実行中:
./manage.py syncdb
モデルのテーブルを作成しません。ただし、冗長モードでは、アプリ「foo」が正しく認識されていることがわかります(settings.pyのINSTALLED_APPSにあります)。モデルを foo の下の models.py に移動すると機能します。
このモデル構造がsyncdbによって認識されないようにするapp_labelまたはメカニズム全体で文書化されていない特定の規則はありますか?