我以前在模型中有一个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约束”错误。这使我认为问题不在于之前将TextField()设置为null = False。如果是这样,这两个问题可能彼此无关。无论哪种方式,我都不知道如何进行。
答案 0 :(得分:0)
我遇到了完全相同的问题。
这是由于TextField设置为null=True
。
只需将您的NULL
字段更改为"null"
,它将像超级按钮一样工作。