2015-08-18 70 views
2

定義模式,我有一些問題,在Django定義模型的順序,所以我想有些事情是這樣的:訂單在Django

class Album(models.Model): 
    mainTrack = models.OneToOneField(Track) 


class Track(models.Model): 
    albumID = models.ForeignKey(Album) 

,並在當我想運行makemigration命令這樣,Django的給這個錯誤:

Track is not defined 

有什麼辦法可以解決嗎?

回答

2

正如你已經注意到了這條線

mainTrack = models.OneToOneField(Track) 

引用Track但顯然Track不是在這個時候定義。

解決方案:

參考使用字符串的Track型號:

mainTrack = models.OneToOneField('Track') 

這也是在docs提到:

If you need to create a relationship on a model that has not yet been defined, you can use the name of the model, rather than the model object itself.

0

您應該添加related_name="track"ForeignKey呼叫。

class Album(models.Model): 
    mainTrack = models.OneToOneField(Track) 

class Track(models.Model): 
    albumID = models.ForeignKey('Album', related_name="track") 
+1

您需要包含一些關於此代碼如何幫助的說明。 – Wtower