ManyToMany字段引用期间的Django NameError

时间:2011-04-11 08:36:24

标签: python django django-models many-to-many

我有一个名为PlayCat的表。它基本上存储了有趣的活动的类别名称。比如迪斯科舞厅,游泳池等。因此,当用户创建Play竞技场时,我希望这些类别被引用(ManyToMany),他/她可以选择它所属的类别。

播放:

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数据库,但当我添加M2M引用时,终端中出现错误消息

_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和wat我没有定义。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:15)

我想这是因为您在模型播放后定义了PlayCat模型。所以它无法解决它。

您可以在Play之前放置模型PlayCat,也可以使用字符串作为参考

category = models.ManyToManyField('PlayCat')