2016-07-04 72 views
0

我是新手,我想問一些可能很基本的東西,我剛剛閱讀了關於在模型上創建關係的Django 1.9文檔尚未定義,它說:「您可以使用該模型,而不是模型對象本身的名字」比我試試吧,這是我的代碼:Django在尚未定義的模型上創建關係

@python_2_unicode_compatible 
class Student(models.Model): 
    name=models.CharField(max_length=50) 
    teachers=models.ForeignKey('Teacher') 

def __str__(self): 
    return self.name 

@python_2_unicode_compatible 
class Teacher(models.Model): 
    name=models.CharField(max_length=50) 

def __str__(self): 
    return self.name 

當我嘗試保存一個Student對象它給了我這樣的錯誤: 「OperationalError:表latihan_student沒有名爲teachers_id的列」 有人可以解釋它謝謝你很多。對不起,我的英文不好

回答

0

這和你如何定義ForeignKey沒有任何關係。你在你的桌子上添加了一個字段;您需要遷移數據庫。

+0

yes我剛剛進行了遷移./manage.py makemigrations [my app],./manage.py sqlmigrate [my app] 0001和./manage.py migrate。然後,我再次嘗試保存Student對象,並再次給我一個錯誤「IntegrityError:NOT NULL約束失敗:latihan_student.teachers_id」。 IAM絕對好奇如何使一個沒有被定義的模型的關係..... –

+0

我覺得你很困惑。文檔正在討論編寫模型,以便您可以在指向它的模型之前定義ForeignKey字段。我認爲*你正在談論的是如何與尚未定義的*實例*建立關係,這顯然是不可能的。 –

+0

是的,你是rigtht ...我沒有做任何老師的對象,我認爲這使得最新的錯誤,然後我做一個老師對象,我也添加了一個關鍵字參數給我foreignkeyrelationship(空=真),並做了我做了它....謝謝你很多 –

0

更新您的教師型號如下:

@python_2_unicode_compatible 
class Teacher(models.Model): 
    name=models.CharField(max_length=50) 
    teachers = models.CharField(max_length=50) 

現在你可以使用在其他型號創建它的對象。你得到了另一個錯誤,因爲在創建對象之後,它已經在數據庫中有條目,而你沒有說出null = True,所以你得到了完整性錯誤,所以在你得到完整性錯誤的字段中添加null = True。