首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django -不允许我在我的模型中添加一个新字段,因为1054,“未知列‘字段列表’”)

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

Stack Overflow用户
提问于 2018-08-16 15:45:01
回答 3查看 2.3K关注 0票数 5

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

代码语言:javascript
复制
- add field to model
- python manage.py makemigrations app
- python manage.py migrate app

除了99%的时间外,所有的工作都是有效的。因此,在第二步(制造)中,由于我的模型中新添加的字段即将开始,我得到了一个错误:

代码语言:javascript
复制
django.db.utils.OperationalError: (1054, "Unknown column 'model.field' in 'field list'")

太棒了。它不允许我通过增加一个新的领域来迁移.因为它找不到我新添加的字段.很有道理!

总之,我已经删除了所有的迁移,删除了我的新字段,再次迁移,迁移了.很好-所以现在我只有一个迁移文件(0001).

按照上述步骤..。错误

我是不是漏掉了什么可笑的东西?我的意思是,在模型中添加一个字段非常简单,我可能已经做了1000次了。为什么Django这么戏弄我

编辑:回答:

好的,我做过了。

在删除迁移文件、截断迁移表并使用0001_initial.py进行迁移之后,我创建了一个空迁移文件(python manage.py makemigrations -空应用程序),并手动添加了该字段.然后我迁移了它成功了!老实说,我对此感到困惑,但至少已经做出了改变:

  • 删除所有迁移文件
  • 截断django_migrations表
  • 注释新的布尔字段
  • 运行python manage.py makemigrations
  • 运行python manage.py迁移--假的
  • 运行python manage.py makemigrations --空应用程序
  • 将字段手动添加到操作中的空迁移文件中: migrations.AddField('modelName','fieldName',models.BooleanField(default=False)),
  • 运行python manage.py迁移
  • 取消注释新的布尔字段,使其表示在迁移操作中所做的操作。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-16 16:18:29

免责声明-只在本地系统上遵循这一点,因为生产人员必须了解这些步骤,然后执行。

请遵循以下步骤:

  • 删除所有迁移文件
  • 截断django_migrations表
  • 注释新的布尔字段
  • 运行python manage.py makemigrations
  • 运行python manage.py migrate --fake
  • 取消布尔字段的注释
  • 运行python manage.py makemigrations
  • 运行python manage.py migrate

通常,这些步骤可以解决任何类型的迁移问题。

另一个原因可能是如果您正在使用django_rest_framework,那么序列化程序也需要根据您的模型更改进行更新。

票数 5
EN

Stack Overflow用户

发布于 2020-04-20 13:42:47

这个问题一直困扰着我,让我发现很多兔子洞、掉桌子等等。我找到的一个简单解决方案是,当django问您是否要重命名该模型的某个字段(运行have迁移时)时,回答"N“。这样做的实质是删除以前的字段并创建新字段。要小心,因为您可能会丢失现有字段上的数据,这样就可以处理新字段或相对容易“重新填充”所需数据的字段。你可能需要运行-假的,如果你得到了一个错误,不能‘拖场’时,迁移后,作出。如果您想回到问题发生之前的迁移状态,您可能需要删除从那以后所做的迁移,并尝试上面的解决方案。

更新:我对布尔字段执行了上述操作,并且保留了数据。尽管我说了N,但它似乎本质上是一种重命名。

票数 0
EN

Stack Overflow用户

发布于 2020-07-12 16:44:48

问题的另一个来源:我有一个基于模型的ModelForm。ModelForm定义定义了两个额外的字段。在执行迁移步骤之前,我不得不从表单定义中注释掉这两个字段。迁移完成后,我对这两个字段进行了注释。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51880875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档