无法在django模型中添加新字段

时间:2018-05-06 06:42:54

标签: django python-3.x django-models makemigrations

  

Django 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....

我跟着this回答。但它给了我以下错误。

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

2 个答案:

答案 0 :(得分:1)

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

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

  1. 为模型中的字段编写代码。
  2. 运行命令manage.py makemigrations
  3. 运行命令manage.py migrate
  4. 这就是文档中的内容。

    因为您已经按照that回答并运行了manage.py --fake命令,所以您已经搞砸了db状态。

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

    1. 转到“博客”应用的“迁移”文件夹。
    2. 查看迁移文件的名称。它们应该看起来像0001_category_field1.py, 0002_category_cover_pic.py
    3. 伪造的迁移将是名称类似于0002_category_cover_pic.py的迁移。请注意其编号,例如0002
    4. 现在,您必须返回之前应用的迁移。因此,如果伪造的迁移号码为0002,则先前应用的迁移将为0001
    5. 现在运行此命令 - manage.py --fake myapp 0001。记下迁移文件的编号。您将不得不伪造另一个迁移回原先应用的迁移文件。
    6. 现在运行命令 - manage.py migrate myapp
    7. 这可以解决您的问题。

答案 1 :(得分:-1)

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

python manage.py makemigrations
python manage.py migrate

现在你将有一个新的数据库,你很高兴。从下一次尝试按照上述评论中提到的方式。