django.db.utils.OperationalError: my_table没有id列的错误?

9 投票
2 回答
18580 浏览
提问于 2025-04-17 22:27

我正在测试我Django应用的models.py文件,应用名是"myapp",在我的Python解释器中,但总是遇到这个错误:

django.db.utils.OperationalError: table myapp_table1 has no column named attribute1_id

在我的models.py里,我有两个表,分别是table1和table2。

 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")
)

2 个回答

0

首先删除pycache文件夹,以及所有的0001_initial.py文件,然后运行 python manage.py flush,接下来

python manage.py makemigrations

然后

python manage.py migrate

接着

python manage.py createsuperuser
6

你需要运行 python manage.py syncdb(如果你使用 south,那就运行 python manage.py migrate,而且建议你使用 south)来让数据库的更改生效。

撰写回答