15

モデルをサブフォルダーに配置するために、ここで説明されている 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またはメカニズム全体で文書化されていない特定の規則はありますか?

4

3 に答える 3

21

Django チケット#10985 を参照してください: ディレクトリでモデルを整理する方法を説明する

モデルを にインポートしていない可能性があります__init__.py

于 2010-03-19T21:15:27.187 に答える
3

syncdbにないモデルのテーブルは作成されないため<appname>.models、そこにインポートしfrom apps.foo.models import SomeModelます。

于 2010-03-19T19:51:24.933 に答える