Django TextField 默认值

Jim*_*ang -2 python django django-models

在我的一张表中,我有一个字段game_fen_when_leave = models.TextField()。但它给了我一个错误“您试图在没有默认值的情况下向游戏添加一个不可为空的字段'game_fen_when_leave';我们不能这样做(数据库需要一些东西来填充现有行)”。这个字段有必要有默认值吗?我看到了一个没有默认值的例子。

小智 5

简短回答
\n创建新模型时:不,不是
\n将其添加到现有模型时:是,不是

\n

关于该主题的更多信息:
\n根据给出的信息,我猜您即将将此新字段添加到现有表中。

\n

当向现有模型添加新的不可空字段时,您需要提供默认值。这是因为该特定表中可能已经有行,并且这些行需要默认值来填充这个新字段。(我实际上只是在这里重复错误消息。)

\n

在您引用的示例中:
\n模型是新的,并且不能存在需要填充默认值的现有行。因此不需要 TextField 的默认值。

\n

几种可能性

\n
    \n
  • 从头开始删除并创建模型:如果通过迁移删除表并再次将其创建为全新的表。您不必提供默认值,因为不能存在现有行。
  • \n
  • 添加默认值:默认值可以只是一个空字符串,这可能是正确的方法。
  • \n
\n

默认情况下,Django TextField 是不可为空的。您有权更改它,但不建议这样做:\n https://docs.djangoproject.com/en/3.0/ref/models/fields/#null

\n
\n

如果基于字符串的字段 null=True,则意味着 \xe2\x80\x9cno data\xe2\x80\x9d 有两个可能的值:NULL 和空字符串。

\n
\n