2010-12-07 12 views
0

私のモデル用のテーブルを作成するために、python manage.py syncdbを取得できません。飾り気のないdjango.db.modelsとしてpython manage.py syncdbがmodels.pyから引き出さない

[email protected] ~/project 
$ python manage.py shell 
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01) 
[GCC 4.3.4 20090804 (release) 1] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> import models 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/home/jhayward/project/models.py", line 23, in <module> 
    class architecture(models.Model): 
    File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 48, in 
__new__ 
    kwargs = {"app_label": model_module.__name__.split('.')[-2]} 
IndexError: list index out of range 
>>> 

インポートモデルは役立ちません。例外は私のモデルの未遂輸入にスローされ、私はやや例外で困惑していますので、これは明らかです。 models.pyは、私がインポートしようとしているのと同じディレクトリにあります。現在のディレクトリをPYTHONPATHに追加すると、動作が異なるように見えます。

このエラーメッセージでは何が起こっていますか、それを助けるために何が必要ですか?

models.pyの基本的な構造は以下の通りである:

from django.db import models 

example_choice = (
    (0, u'first choice'), 
    (1, u'second choice'), 
    ) 

[more such choices] 

class architecture(models.Model):             
    name = models.TextField(null = True, blank = True) 

[more such classes, with more fields and some interconnections but no more sophisticated syntax] 
+1

whats onlines 23 models.py? – baloo

+0

models.py –

+0

クラスアーキテクチャ(models.Model)を投稿してください:[私はパイリントごとに最初の 'A'を試しましたが、同じエラーが発生しました。クラス定義は私が知る限り歩行者です。] – JonathanHayward

答えて

3

アプリケーションパッケージ(myappなど)があり、モデルがその中になければなりません(myapp/models.py) 次に、myapp.modelsまたはmyappインポートモデルをインポートできます。

このエラーは、djangoがmodelsモジュールを含むパッケージとしてappnameを見つけようとしているためです(モデルモジュールへのパスに少なくとも2レベルの深さが必要です)。

さらに、このアプリはINSTALLED_APPS内で宣言する必要があります

+0

"さらに、INSTALLED_APPS内で宣言する必要があります":これは私の問題でした。ありがとうございました。 – JonathanHayward

1

モデルを直接アプリ内ではなく、プロジェクト内に含まれるべきです。

関連する問題