我正在测试我的Django应用程序的models.py文件:我的
Python interepreter中的“myapp”,但是仍然遇到这个错误:
django.db.utils.OperationalError: table myapp_table1 has no column named attribute1_id
我的models.py,table1和表2中有2个表.
class table1 (models.Model): name = models.CharField(max_length=25) def __str__(self): return self.name class table2 (models.Model): name = models.CharField(max_length =25) attribute1= models.ForeignKey(Type,related_name = "att1_set+",default=None) attribute2= models.ManyToManyField(Type,related_name = "att2_set+",default=None) def __str__(self): return self.metric_name
在我的python解释器中:
>>> from my_app.models import table1,table2 >>> t1 = table1 (name = "ty1",id = 0) >>> t1.save() >>> t2 = table1 (name = "ty2",id = 1) >>> e1 = table2 (name = "as",attribute1 = t1) >>> e1.save() >>> error aforementioned after .save
但是,当我执行:“manage.py sql myapp”时,我看到我的table2:
CREATE TABLE "my_app_table2" ( "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,"name" varchar(25) NOT NULL,"attribute1_id" integer NOT NULL REFERENCES "myapp_table1" ("id") )
解决方法
您必须运行python manage.py syncdb(如果您使用south,则运行python manage.py migrate – 您应该这样做),以便将更改应用于数据库.