Django:快速处理添加不可为空的字段

2024-04-19 07:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

在开发模型时,我经常在运行makemigrations时遇到不可为空的字段错误:

You are trying to add a non-nullable field 'user' to randommodel without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows)
 2) Quit, and let me add a default in models.py
Select an option: 

几乎每次当我遇到这个错误时,我都很乐意删除该表中的数据(通常在开发过程中只有几个测试条目),而且删除它比确定什么是合适的默认值更有效。在

然而,目前我还没有一个合适的方法来完成这项工作,结果是刷新数据库和/或删除迁移,这项工作相当繁重,但仍然有效。在

删除模型/表中的数据以消除错误的最佳方法是什么?(是否通过壳牌/壳牌加在

型号:

^{pr2}$

Tags: to数据方法模型youadddefault错误
1条回答
网友
1楼 · 发布于 2024-04-19 07:28:43

即使您删除了该表中的所有记录,在运行makemigrations时,也会再次要求您提供默认值。这是因为您正在为现有表生成一个新的迁移文件。在

我能想到的一个解决方案是通过运行migrate app_name zero来告诉Django您正在重新启动app_name。这将取消应用到数据库的所有迁移文件。在

然后删除app_name中的所有迁移文件。然后再次运行makemigrations。这将创建一个新的初始迁移文件。然后使用migrate将其应用到数据库。在

正如你所说,你不介意删除你的数据。这就更好了。你甚至不必删除任何记录。它只会创建一个新表,新表的名称与所有新字段和0记录相同。在

相关问题 更多 >