2013-07-15 84 views
3

所以我正在開發一個使用Django的項目,我試圖在一些模型之間創建幾個關係,比如User和Country。當我嘗試syncdb我的控制檯輸出「名稱國家未定義」。退房的代碼:Django說我的模型沒有定義

class User(models.Model): 
name = models.CharField(max_length=50,null=False) 
email = models.EmailField(max_length=50,null=False) 
password = models.CharField(max_length=10,null=False) 
country = models.ForeignKey(Country,null=False) #error here 
rol = models.ForeignKey(Rol,null=False) 
job = models.ManyToManyField(Job) #UserxJob 
skill = models.ManyToManyField(Skill) #UserxSkill 
plan = models.ManyToManyField(Plan) #UserxPlan 
image = models.ForeignKey(Image) 
description = models.TextField(max_length=300) 
website = models.URLField(max_length=100,null=True) 

def __unicode__(self): 
    return self.name 


class Country(models.Model): 
name = models.CharField(max_length=50,null=False) 

def __unicode__(self): 
    return self.name 

你能幫我一個這個嗎?

回答

14

上移的Country上面User類定義文件中

OR

User模型,更新屬性country到:

country = models.ForeignKey('Country',null=False) 

文檔上這可以是found here

2

您需要將德用戶定義之上的國家定義。

正在發生的事情是編譯器(編譯爲pyc文件字節代碼時)被編譯爲用戶的類定義,並認爲對一個國家類型對象的引用。編譯器還沒有看到這個定義,並且不知道它是什麼,因此它沒有被定義的錯誤。

因此,基本的經驗法則 - >在您打電話或參考它之前,必須定義所有內容

+0

不用擔心。我會用karthikr的另一種使用「國家」的方法。這樣你就不必四處移動。我只想解釋編譯如何工作:) –