我试图按照以下简单规则向数据库中的模型添加一个布尔字段:
- add field to model
- python manage.py makemigrations app
- python manage.py migrate app除了99%的时间外,所有的工作都是有效的。因此,在第二步(制造)中,由于我的模型中新添加的字段即将开始,我得到了一个错误:
django.db.utils.OperationalError: (1054, "Unknown column 'model.field' in 'field list'")太棒了。它不允许我通过增加一个新的领域来迁移.因为它找不到我新添加的字段.很有道理!
总之,我已经删除了所有的迁移,删除了我的新字段,再次迁移,迁移了.很好-所以现在我只有一个迁移文件(0001).
按照上述步骤..。错误
我是不是漏掉了什么可笑的东西?我的意思是,在模型中添加一个字段非常简单,我可能已经做了1000次了。为什么Django这么戏弄我
编辑:回答:
好的,我做过了。
在删除迁移文件、截断迁移表并使用0001_initial.py进行迁移之后,我创建了一个空迁移文件(python manage.py makemigrations -空应用程序),并手动添加了该字段.然后我迁移了它成功了!老实说,我对此感到困惑,但至少已经做出了改变:
发布于 2018-08-16 16:18:29
免责声明-只在本地系统上遵循这一点,因为生产人员必须了解这些步骤,然后执行。
请遵循以下步骤:
python manage.py makemigrationspython manage.py migrate --fakepython manage.py makemigrationspython manage.py migrate通常,这些步骤可以解决任何类型的迁移问题。
另一个原因可能是如果您正在使用django_rest_framework,那么序列化程序也需要根据您的模型更改进行更新。
发布于 2020-04-20 13:42:47
这个问题一直困扰着我,让我发现很多兔子洞、掉桌子等等。我找到的一个简单解决方案是,当django问您是否要重命名该模型的某个字段(运行have迁移时)时,回答"N“。这样做的实质是删除以前的字段并创建新字段。要小心,因为您可能会丢失现有字段上的数据,这样就可以处理新字段或相对容易“重新填充”所需数据的字段。你可能需要运行-假的,如果你得到了一个错误,不能‘拖场’时,迁移后,作出。如果您想回到问题发生之前的迁移状态,您可能需要删除从那以后所做的迁移,并尝试上面的解决方案。
更新:我对布尔字段执行了上述操作,并且保留了数据。尽管我说了N,但它似乎本质上是一种重命名。
发布于 2020-07-12 16:44:48
问题的另一个来源:我有一个基于模型的ModelForm。ModelForm定义定义了两个额外的字段。在执行迁移步骤之前,我不得不从表单定义中注释掉这两个字段。迁移完成后,我对这两个字段进行了注释。
https://stackoverflow.com/questions/51880875
复制相似问题