3

姜戈 2.0

我在 中创建了一个模型Blog app

class Category(models.Model):
    field1 = models....
    field2 = models....
    field3 = models....

一段时间后,我想在该模型中添加一个新字段。

class Category(models.Model):
    field1 = models....
    cover_pic = .models....
    field2 = models....
    field3 = models....

我遵循了这个答案。但它给了我以下错误。

django.db.utils.OperationalError: (1054, "Unknown column 'blog_category.cover_pic' in 'field list'")

4

2 回答 2

2

答案来自 2014 年和旧 Django 版本。

添加新字段的工作流程很简单:

  1. 为模型中的字段编写代码。
  2. 运行命令manage.py makemigrations
  3. 运行命令manage.py migrate

这都在文档中。


由于您已经遵循了该答案并运行了该manage.py --fake命令,因此您的数据库状态有些混乱。

要恢复,请执行以下操作:

  1. 转到您的“博客”应用程序的“迁移”文件夹。
  2. 查看迁移文件的名称。他们应该看起来像0001_category_field1.py, 0002_category_cover_pic.py
  3. 伪造的迁移将是具有类似名称的迁移0002_category_cover_pic.py。注意它的编号,例如0002.
  4. 现在您必须回到之前应用的迁移。因此,如果伪造的迁移编号为0002,则先前应用的迁移将为0001
  5. 现在运行这个命令 - manage.py migrate --fake myapp 0001。记下迁移文件的编号。您必须伪造另一个迁移回之前应用的迁移文件。
  6. 现在运行命令 - manage.py migrate myapp

这应该可以解决您的问题。

于 2018-05-06T06:52:14.870 回答
0

如果您的问题尚未解决并且您的数据库中没有重要数据,我建议您从头开始您的数据库。删除所有数据库表,然后删除文件app_name/migration夹中的所有迁移文件。现在运行这两个命令并开始开发。

python manage.py makemigrations
python manage.py migrate

现在您将拥有一个全新的数据库,一切顺利。从下次开始尝试按照上述评论中提到的方式进行操作。

于 2018-05-06T08:44:52.913 回答