DatabaseError没有带有ManyToManyField的表

时间:2012-07-03 20:59:27

标签: python django django-models

所以情况就是这样:我在我的Event表中添加了一个新列(演示者)。我运行alter table sql语句,运行python manage.py syncdb。我正在尝试选择许多配置文件并将它们存储为演示者。为什么会这样?

Exception Type:     DatabaseError
Exception Value:    no such table: events_event_presenters

class Event(models.Model):
    title = models.CharField(max_length=200)
    presenters = models.ManyToManyField(Profile, null=True, blank=True) #new column
    sub_heading = models.CharField(max_length=200)
    description = models.TextField()
    date = models.DateTimeField()

2 个答案:

答案 0 :(得分:5)

您已将ManyToMany字段添加到现有表中,syncdb将无法检测到该字段。似乎django对我来说是一个缺点,但我想这是次要的。生成表的最简单方法是运行

./manage.py sql events

然后找到events_event_presenters的定义并通过

粘贴到数据库shell中
./manage.py dbshell

答案 1 :(得分:0)

“没有这样的表”意味着您的数据库不包含具有您所写名称的表。

检查名称是否与数据库中的名称完全相同(如果保留大小写则更好)。 如果名称正常,请在表的名称前面设置您在其中创建表的数据库模式的名称,例如my_schema.my_table。