我曾经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。该字段现在应该接受空值。我想象makemigrations并migrate会做这项工作。
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() 中。如果是这样的话,这两个问题可能彼此无关。无论哪种方式,我都不知道如何进行。