2

2つのアプリ(1つはデバッグテストとして作成)を持つDjangoプロジェクトがあります。デバッグテストの場合、syncdbはモデルをデータベースに配置しますが、他の場合は配置しません。

  • 両方ともにありsettings.INSTALLED_APPSます。
  • 約7つのモデルがあり、いずれも認識されていません。
  • サーバー、ページ、syncdb-consoleのいずれもエラーを出しません。
  • モデルはmodelsディレクトリにあります。テストとして、app / models.pyにも1つあります(どちらも機能しません)。
  • 私にとって最も驚くべきことは、以下のコードが同期されていない(スキップされたアプリから実行された)モデルを表示することです:
for model in get_models():  
    models.append(model)  
pass models to a template  

どんな助けでも大歓迎です。些細なことだと思いますが、やるべきことは考えられません。

ありがとう、

アップデート:

INSTALLED_APPS = (  
    'django.contrib.auth',  
    'django.contrib.contenttypes',  
    'django.contrib.sessions',  
    'django.contrib.messages',  
    'django.contrib.admin',  
    'techtree',  
    'froink',  
)

構造:

  • project/techtree/models.py(テストモデルを含む)
  • project/techtree/models/__init__.pyここで説明されているように)
  • project/techtree/models/typ.py(モデルタイプを含む)

最後の行と同じタイプのファイルが他にもあります。

4

4 に答える 4

2

__init__.py2番目のアプリのmodelsディレクトリにファイルがありませんか?それはそれがパス上で見つからないことを意味します。

INSTALLED_APPS設定とディレクトリ構造を教えてください。

あなたのディレクトリ構造を見ると、何が悪いのか推測できると思います。

my_app/
    __init__.py
    my_module.py
    my_module/
        __init__.py
        my_python_file.py

上記の架空のディレクトリ構造で、次のことを行うと何がインポートされますか?

from my_module import *

ディレクトリ内からすべてをインポートしますmy_module.pyか、それともディレクトリ内のすべてをインポートしますmy_moduleか?

どちらか一方を使用してください。両方ではありません。すべてをファイル内に置きmodels.py、ディレクトリを作成する正当な理由がない限り、ディレクトリを削除しますmodels。あなたはおそらくそうではありません。

于 2011-04-25T00:41:50.950 に答える
2

これと同じ問題に直面しました。モデルを別のディレクトリにグループ化する方法を理解するのに何時間もかかりました。これを行う方法は次のとおりです。

app_labelパラメーターを使用して、各モデルにメタクラスを追加します。

from django.db import models

class Test(models.Model):
    class Meta:
        app_label = 'myapp'

これについて私が知ったのは、 Djangoモデルを別々のファイルに配置することです

__init__.pyしかし、これを行うだけでは十分ではなく、次のようにモデルディレクトリ内のファイルにモデルをインポートする必要があります。

from YourModelFile import *
于 2011-05-20T10:38:36.000 に答える
0

ファイル名を確認してください

__init__.py

ではなく

init.py

于 2011-04-25T09:48:43.420 に答える
0

Djangoは通常、models.pyファイルのみを検索しています。あなたが持っていて、ファイルでmodels.py呼び出されたモジュールサブディレクトリがある場合、それはモデルを正しく認識していません(私の推測)。次の2つのいずれかを実行できます。models__init__.py

  • サブモジュールを完全に削除し、すべてのモデル定義をmodels.py

また

  • で削除models.pytechtreeます。モデル定義を保持するmodels.pyファイルをアプリに追加します。techtree.modelsあなたに追加'techtree.models'しますINSTALLED_APPS(ちょうど十分で'techtree'はありません)。

これらの回答の1つがお役に立てば幸いです。

于 2011-04-25T01:09:52.810 に答える