Django模式不识别“QueryString”BaseObject的外键

我目前正在一个Docker实例中的一个Django 1.5.2项目,这个实例和一个单独的Docker实例中的mysql数据库对话。 我正尝试通过创build一个中间表来创build两个表之间的多对多关系,这个中间表包含两个指向两个需要连接的表的外键。 当我运行python manage.py syncdb时,问题就出现了,它向terminal吐出下面的错误: NameError: name 'QueryString' is not definedQueryString在我的模型中是明确定义的。

这是我的模特…

 class Tag(models.Model): name = models.CharField(max_length=100) class QueryStringTab(models.Model): tag = models.ForeignKey(Tag, related_name='querystringtab') querystring = models.ForeignKey(QueryString, related_name='querystringtab') class QueryString(BaseObject): """ Query string holds an SQL statement and query properties for execution """ server_id = models.IntegerField() schema = models.CharField(max_length=255, blank=True) query = models.CharField(max_length=60000) variables = models.TextField(blank=True) created_by = models.ForeignKey(User, related_name='queries_created') updated_by = models.ForeignKey(User, related_name='queries_last_edited') created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField() touched_by = models.CharField(max_length=1000) config = models.TextField(blank=True) runs_started = models.IntegerField(default=0) runs_completed = models.IntegerField(default=0) runs_completed_duration = models.IntegerField(default=0) # total number of seconds spent running this query to completion formats = "pretty_html html json prettyjson csv excel tableau".split() 

值得注意的一点…
1)它很好地识别Tag模型。
2)它可能与QueryString是一个BaseObject的事实BaseObject
3)在mysql数据库中成功创buildTag

任何人都可以find明显的,我做错了什么?

QueryStringTab的声明位于QueryStringTab的声明之前; 所以当Python评估第一个时,它还没有看到第二个定义,因此报告一个NameError。

在这种情况下,Django允许你使用string目标而不是类对象:

 querystring = models.ForeignKey('QueryString', related_name='querystringtab') 

或者,您可以简单地将QueryStringTab的定义移动到最后。