Невозможно вставить данные в ArrayField при использовании psqlextra.backend с django - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть модель с ArrayField с JSONField в качестве базы. Когда я пытаюсь вставить данные, выдается следующая ошибка:

ProgrammingError: column "data" is of type jsonb[] but expression is of type text[]
LINE 1: ...e_status_code", "is_success", "error") VALUES (1, ARRAY['"a"...
                                                             ^
HINT:  You will need to rewrite or cast the expression.

Я использую psqlextra.backend в качестве механизма базы данных по умолчанию. Моя модель и другие соответствующие коды:

from django.db import models
from django.contrib.postgres.fields import JSONField, ArrayField

class TestModel(models.Model):
    data = ArrayField(
        JSONField(),
        blank=True,
        )

Мой соответствующий файл миграции выглядит следующим образом:

import django.contrib.postgres.fields
import django.contrib.postgres.fields.jsonb
from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('emails', '0003_auto_20200408_1351'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='TestModel',
            name='data',
        ),
        migrations.AddField(
            model_name='TestModel',
            name='data',
            field=django.contrib.postgres.fields.ArrayField(base_field=django.contrib.postgres.fields.jsonb.JSONField(), blank=True, size=None),
        ),
    ]

Я попытался добавить данные следующим образом:

TestModel.objects.create(
    data= [{"a":"b"}, {"c":"d"}]
    )

1 Ответ

0 голосов
/ 09 апреля 2020

После дальнейшего поиска, это была известная ошибка в Django <2.2 </p>

https://code.djangoproject.com/ticket/28291

Обновление django сделало свою работу!

...