2015-12-21 12 views
5

初心者Djangoのモデル誤差

私は健全性チェックとしてdjango-admin startproject simple

持つ新しい超シンプルなDjangoのスケルトンプロジェクトを作成し、私は簡単なビューでviews.pyファイルを作成します「hello world」タイプのテストメッセージとそのビューへのURLルートを出力します。私はpython manage.py runserverでこれを実行することができ、正常に動作します。

私はmodels.pyファイルを1つのスーパーシンプルなDjango ORMモデルクラスで作成します。参考までに、私の目標は既存のテーブルとスキーマを使用することです。そのため、ORMに新しいテーブルを生成させたくありません。単に、私のviews.pyコードにimport modelsを追加

class SuperSimpleModel(models.Model): 
    some_value = models.CharField(blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'model_test_table' 

python manage.py runserverで、サーバの起動時に発生する次のエラーが発生します。

"RuntimeError: Model class simple.models.SuperSimpleModel doesn't declare an explicit app_label and either isn't in an application in INSTALLED_APPS or else was imported before its application was loaded."

私は自分のアプリケーションが正しく初期化されていないことを推測しますか?私はこの問題を上記の簡単な再現可能なステップにまで煮詰めました。私は上記の手順でsettings.pyに何も変更していません。通常、私はデータベースを設定する必要がありますが、私はそれをしなくてもエラーを再現することができます。

+0

設定ファイル – Zartch

答えて

8

ここで設定を変更する必要がある点は間違いありません。一例として、this Django tutorial stepを参照してください。

あなたがここで提供したことから判断すると、INSTALLED_APPS設定に'simple'を追加する必要があるようです。このような何かを見終わるでしょう設定するように:

INSTALLED_APPS = [ 
    'simple', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 

'simple'ことを、それ自体で、あなたのPYTHONPATHの設定方法を考えると、適切でないかもしれません。上記のチュートリアルの手順は'polls.apps.PollsConfig'で行われていたため、アプリケーションにさらに具体的なパスを追加する必要があります。

+0

のINSTALLED_APPSに 'SuperSimpleModel'を追加しようとしました。それはそれでした。それは完全にチュートリアルでした。ありがとう! – clay

0

私は同様の問題に直面しました。私のインタプリタは間違ったPythonパス設定を持っていました。前の回答が役に立たない場合は、チェックしてください。 manage.pyが置かれているディレクトリへのパスを含む必要があります。