无法将类型字符variant []强制转换为jsonb django迁移

时间:2019-05-22 06:15:39

标签: python django model migration

我现在收到错误

,将模型从arrayfield更改为json字段
  

无法将类型变化的字符转换为jsonb   第1行:... LUMN“ questionaires” TYPE jsonb使用“ questionaires” :: jsonb。

如何解决此问题?以及它是如何发生的?

来自

questionaires   = ArrayField(models.CharField(max_length=4000), null=True, blank=True)

questionaires   = JSONField(null = True,blank = True)

1 个答案:

答案 0 :(得分:1)

我认为您必须执行多阶段迁移:

  1. 创建类型为JSONField的临时新字段:Ex Questionaires_2
  2. 编写自定义python迁移RunPython以手动转换数据
  3. 删除旧字段:问卷调查者
  4. 将临时字段重命名为旧的问卷调查器_2->问卷调查器

更多信息:请参阅此https://stackoverflow.com/a/21997589/533738

未测试!

ALTER TABLE <Your Table>
ALTER COLUMN questionaires TYPE JSONB
      USING translate(questionaires::text, '{}','[]')::JSONB;