2015-08-18 67 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