Has*_*bal 3 python django postgresql django-models django-jsonfield
我试图在模型中包括JSONField:
from django.contrib.postgres.fields import JSONField
class Trigger(models.Model):
solutions = JSONField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试迁移数据库时,它出现以下错误:
django.db.utils.ProgrammingError: cannot cast type text[] to jsonb
LINE 1: ...ALTER COLUMN "solutions" TYPE jsonb USING "solutions"::jsonb
Run Code Online (Sandbox Code Playgroud)
在这里可以做什么?
ric*_*ier 18
您可以从
operations = [
migrations.AlterField(
model_name='foo',
name='bar',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict),
),
]
Run Code Online (Sandbox Code Playgroud)
到
operations = [
migrations.RemoveField(
model_name='foo',
name='bar',
),
migrations.AddField(
model_name='foo',
name='bar',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict),
),
]
Run Code Online (Sandbox Code Playgroud)
错误表明您正在尝试alter column and not add a new之一。该列之前solutions似乎已声明为Textfield(或Charfield),其中包含数据,您正尝试将其转换为JSON字段。这就是为什么您会收到此错误。
如果不需要,最好创建一个新字段,而不是将文本字段更改为JSON字段并删除前一个字段。
from django.contrib.postgres.fields import JSONField
class Trigger(models.Model):
new_solutions = JSONField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |