2012-05-03 13 views
1

私はDjango & Pythonに新しく、チュートリアルに従っていますが、私には私が困惑しているエラーがあります。Django syncdb - NameError:name '*********'が定義されていません

私はdjangoモデル/データベースを構築しようとしています。

私はのpython manage.py syncdbの実行を実行しようとすると、私は私のコマンドラインプロンプトで次のエラーが表示されます。

C:\Users\6233114\Django-Projects\GlobalX>python manage.py syncdb 
Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 
443, in execute_from_command_line 
    utility.execute() 
    File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 
382, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 196, 
in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 231, 
in execute 
    self.validate() 
    File "C:\Python27\lib\site-packages\django\core\management\base.py", line 266, 
in validate 
    num_errors = get_validation_errors(s, app) 
    File "C:\Python27\lib\site-packages\django\core\management\validation.py", lin 
e 30, in get_validation_errors 
    for (app_name, error) in get_app_errors().items(): 
    File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 158, in 
get_app_errors 
    self._populate() 
    File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 64, in 
_populate 
    self.load_app(app_name, True) 
    File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 88, in 
load_app 
    models = import_module('.models', app_name) 
    File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in im 
port_module 
    __import__(name) 
    File "C:\Users\6233114\Django-Projects\GlobalX\app_data\models.py", line 15, i 
n <module> 
    class LanguageCode(models.Model): 
    File "C:\Users\6233114\Django-Projects\GlobalX\app_data\models.py", line 27, i 
n LanguageCode 
    languageDirectionID = models.ForeignKey(languageDirection, default=1, db_col 
umn="languageDirectionID") 
NameError: name 'languageDirection' is not defined 

C:\Users\6233114\Django-Projects\GlobalX> 

これは私のmodels.pyファイル(行1のダウンカット版です - 29):

from django.db import models 
    from django.contrib.auth.models import User 

    class LanguageDirection(models.Model): 
     languageDirectionID = models.AutoField(primary_key=True, db_column="languageDirectionID") 
     languageDirectionDescription = models.CharField(max_length=20, db_column="languageDirectionDescription") 
     languageDirDescription = models.CharField(max_length=20, db_column="languageDirDescription") 
     textAlign = models.CharField(max_length=20, db_column="textAlign") 
     oppositeLanguageDirectionDescription = models.CharField(max_length=20, db_column="oppositeLanguageDirectionDescription") 
     oppositeLanguageDirDescription = models.CharField(max_length=20, db_column="oppositeLanguageDirDescription") 
     oppositeTextAlign = models.CharField(max_length=20, db_column="oppositeTextAlign") 
     class Meta: 
     db_table="languageDirection" 

    class LanguageCode(models.Model): 
     languagecodeID = models.AutoField(primary_key=True, db_column="languageCodeID") 
     languageCodeDescription = models.CharField(max_length=10, db_column="languageCodeDescription") 
     baseLanguageCode = models.CharField(max_length=10, db_column="baseLanguageCode") 
     languageNameEng = models.CharField(max_length=255, db_column="languageNameEng") 
     altLanguageNameEng = models.CharField(max_length=255, blank=True, null=True, db_column="altLanguageNameEng") 
     languageNameNative = models.CharField(max_length=255, db_column="languageNameNative") 
     altLanguageNameNative = models.CharField(max_length=255, blank=True, null=True, db_column="altLanguageNameNative") 
     iso639_1 = models.CharField(max_length=10, blank=True, null=True, db_column="iso639_1") 
     iso639_2T = models.CharField(max_length=10, db_column="iso639_2T") 
     iso639_2B = models.CharField(max_length=10, db_column="iso639_2B") 
     iso639_X = models.CharField(max_length=10, db_column="iso639_X") 
     languageDirectionID = models.ForeignKey(languageDirection, default=1, db_column="languageDirectionID") 
     class Meta: 
     db_table="languageCode" 

LanguageDirection & LangaugeCodeとの間の関係は、1対多数、ここLanguageDirection.LanguageDirectionID(1)及びLanguageCode.LanguageDirectionID(多くの)です。

このエラーの原因は何ですか?これをどのように修正できますか?

答えて

1

languageDirectionID = models.ForeignKey(languageDirection, default=1, db_column="languageDirectionID")は、languageDirectionID = models.ForeignKey(LanguageDirection, default=1, db_column="languageDirectionID")である必要があります。このエラーは、というクラス名を参照する必要があり、外部キーターゲットのDBテーブル名ではないlanguageDirectionが正しく大文字化されないという問題を指します。

+0

ありがとうございます!私はよく知っていたはずです。私の愚かな間違い。 – user1261774

4

これはエラーの肉である:

languageDirectionID = models.ForeignKey(languageDirection, default=1, db_col 
umn="languageDirectionID") 
NameError: name 'languageDirection' is not defined 

線がなければならない:

languageDirectionID = models.ForeignKey(LanguageDirection, default=1, db_column="languageDirectionID") 

のForeignKeyは、"LanguageDirection"として引用符でクラスを取るか、またはクラスの名前ので。

NameErrorは、今後、スコープに含まれていない変数を使用しようとしているか、存在しない変数を使用しようとしています。

+0

助けてくれてありがとう。 – user1261774

+0

+1は 'NameError'の意味です。 –

2

私に何度か起こったことは、Djangoでモデルを定義するときに、外部キーフィールドが同じドキュメント内でさらに定義されたモデルに関連することです。

これはPycharm 2.7で私には何の奇妙なものもないと警告してくれません。とにかく、これを解決するにはクラス名の周りに ""を入れてください。

models.ForeignKey('SomeModel')

関連する問題