Django在引用ManyToMany字段时出现NameError
我有一个叫做 PlayCat 的表,这个表主要用来存储各种有趣活动的类别名称,比如迪斯科、游泳池等等。所以我希望在用户创建一个游戏场地时,可以选择这些类别(多对多关系),这样每个场地就可以关联到多个活动类别。
游戏:
class Play(models.Model):
shopname=models.CharField(max_length=100)
desc=models.CharField(max_length=500,blank=True, null=True)
address=models.CharField(max_length=300)
category = models.ManyToManyField(PlayCat)
url=models.URLField(blank=True, null=True)
email=models.EmailField(blank=True, null=True)
slug=models.SlugField(blank=True, null=True)
phone=models.CharField(max_length=40,blank=True, null=True)
def __unicode__(self):
return self.shopname
在同一个 models.py 文件里,我有 'PlayCat'。
class PlayCat(models.Model):
cat = models.CharField(max_length=45)
def __unicode__(self):
return self.cat
我也已经把 PlayCat 数据库填充好了,但当我添加多对多关系时,终端出现了错误信息。
_import__(name)
File "/home/saud/Downloads/Django-1.2.3/ms/ms/ms/sale/models.py", line 104, in <module>
class Play(models.Model):
File "/home/saud/Downloads/Django-1.2.3/ms/ms/ms/sale/models.py", line 108, in Play
category = models.ManyToManyField(PlayCat)
NameError: name 'PlayCat' is not defined
我不明白为什么会出现 NameError,也不知道我没有定义什么。请帮帮我。谢谢。
1 个回答
15
我想这是因为你在定义模型时,PlayCat是在Play模型之后定义的。所以系统没办法找到它。
你可以把PlayCat放在Play之前定义,或者用字符串来引用它。
category = models.ManyToManyField('PlayCat')