3

我曾经TextField(blank=True, default='')在我的模型中有一个。由于项目需求的一些变化,现在存储一个字典成为一个更好的主意,如下所示:

instructions {
    wait_time: {
        active: True
        message: 'This is a standard message'
    }
}

所以我把它改成了 JSONField: JSONField(blank=True, null=True)。对序列化程序进行了更改,并通过了该特定字段的测试。当我试图运行西装的其余部分时,我收到了这个错误:

AssertionError: {u'non_field_errors': [u'null value in column "instructions" violates not-null constraint\n

这很有意义,因为 TextField 已设置null=False。该字段现在应该接受空值。我想象makemigrationsmigrate会做这项工作。

django.db.utils.DataError: invalid input syntax for type json
DETAIL:  The input string ended unexpectedly.
CONTEXT:  JSON data, line 1:

我的第一个想法是关于之前为 TextField() 设置的默认值。为了测试它,我将迁移恢复到创建之前的那一刻,删除新的迁移,“mademigrations”并运行测试。由于一些奇怪的原因,我仍然得到:“违反非空约束”错误。这让我认为问题不在于之前设置为 null=False 的 TextField() 中。如果是这样的话,这两个问题可能彼此无关。无论哪种方式,我都不知道如何进行。

4

1 回答 1

1

我有完全相同的问题。
这是由于 TextField 设置为null=True.
只需将您的NULL字段更改为"null",它就会像魅力一样发挥作用。

于 2019-09-23T08:45:03.063 回答