2012-05-03 41 views
1

我是Django的新手& Python並且一直在關注教程,但是我有一個錯誤讓我難住。Django syncdb - NameError:name'*********'未定義

我正在嘗試構建我的django模型/數據庫。

當我嘗試運行蟒蛇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之間的關係是一對多的,其中LanguageDirection.LanguageDirectionID(一個)和LanguageCode.LanguageDirectionID(多)。

任何有關造成此錯誤的建議以及我如何解決此問題?

回答

1

languageDirectionID = models.ForeignKey(languageDirection, default=1, db_column="languageDirectionID")應該是languageDirectionID = models.ForeignKey(LanguageDirection, default=1, db_column="languageDirectionID")。該錯誤指的是languageDirection(應參照類名稱而不是外鍵目標的數據庫表名稱)的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

「NameError」的含義爲+1。 –

2

幾次發生在我身上的事情是,當在Django中定義模型時,外鍵字段與在相同文檔中進一步定義的模型相關。

這給了我沒有警告在Pycharm 2.7中,我認爲有點奇怪。無論如何,要解決這個問題只是圍繞着課程名稱。

models.ForeignKey('SomeModel')