Python 将TextField()迁移到JSONField()中

Python 将TextField()迁移到JSONField()中,python,django,Python,Django,我以前在我的模型中有一个TextField(blank=True,default='')。由于项目需求发生了一些变化,现在最好存储dict,如下所示: instructions { wait_time: { active: True message: 'This is a standard message' } } 所以我把它改成了一个JSONField:JSONField(blank=True,null=True)。在序列化程序中进行了更改,并

我以前在我的模型中有一个
TextField(blank=True,default='')
。由于项目需求发生了一些变化,现在最好存储dict,如下所示:

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()中。如果是这样的话,这两个问题可能互不相关。不管怎样,我都不知道如何继续。

我遇到了完全相同的问题。
这是由于TextField设置为
null=True


只需将您的
NULL
字段更改为
“NULL”
,它将像一个符咒一样工作。

问题是
TextField
设置为
NULL=True
,不清楚如何迁移此类
NULL
值。一个直截了当的候选者当然是
'null'
JSON blob.@WillemVanOnsem您能提供更多详细信息吗?您找到答案了吗?我遇到了同样的问题。下面的答案不适合我