代码之家  ›  专栏  ›  技术社区  ›  trouselife

Django-不允许我在模型中添加新字段,因为1054,“未知列‘字段列表’”)

  •  0
  • trouselife  · 技术社区  · 6 年前

    我只想按照简单的规则向数据库中的模型添加一个布尔字段:

    - add field to model
    - python manage.py makemigrations app
    - python manage.py migrate app
    

    几乎99%的时间都在工作。因此,在第二步(makemigrations)中,随着我的模型中新添加的字段越来越少,我得到一个错误:

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

    杰出的。它不允许我通过添加一个新字段来进行迁移。。。。。因为它找不到我试图添加的字段。。。完全有道理!

    不管怎样,我已经删除了所有的迁移,删除了我的新字段,再次进行迁移,迁移。。。一切正常-所以现在我只有一个迁移文件(0001)。。。

    按照上面的步骤。。。错误

    我是不是错过了一些可笑的事情?我是说,在模型中添加一个字段非常简单,我可能已经做了1000次了。为什么Django这样取笑我

    编辑:回答:

    好的,我已经做了。

    • 删除所有迁移文件
    • 截断django_migrations表
    • 运行python manage.py makemigrations
    • 运行python manage.py makemigrations--empty app
    • 手动将字段添加到操作中的空迁移文件:

      migrations.AddField('modelName', 'fieldName', models.BooleanField(default=False)),
      
    • 取消对新布尔字段的注释,使其表示在迁移操作中所做的操作
    1 回复  |  直到 6 年前
        1
  •  2
  •   Arghya Saha    6 年前

    请遵循以下步骤:

    • 截断django_migrations表
    • 注释新的布尔字段
    • 运行 python manage.py makemigrations
    • 运行 python manage.py migrate --fake
    • 取消对布尔字段的注释
    • python manage.py生成迁移
    • python manage.py migrate

    一般来说,这些步骤可以解决任何类型的迁移问题

    另一个原因可能是 django_rest_框架 然后序列化器也需要根据您的模型更改进行更新。