Простой вопрос: установка поля как ArrayField (JSONField (...), ...) с использованием Django 1.9+ и PostgreSQL 9.4.6 не позволяет работа при сохраненииJSONField() не сохраняется должным образом при вложении в качестве дочернего элемента ArrayField()
# models.py
class Foo(models.Model):
bar = ArrayField(JSONField(blank=True, null=True), default=list([]))
# app.py
...
data = request.data #ie. [{...}, {...}]
# variations that were tested:
# JSON.stringify([{...}, {...}, ...])
# JSON.stringify([JSON.stringify({...}), JSON.stringify({...}), ...]
# any mix of non-JSON.stringified and stringified objects being sent via AJAX
Foo(bar=data)
# error message:
django.db.utils.ProgrammingError: column "bar" is of type \
jsonb[] but expression is of type text[]
LINE 1: INSERT INTO "app_foo" ("bar") VALUES (ARRAY['{"name": ...
^
HINT: You will need to rewrite or cast the expression.
Вы пробовали 'Foo (fooField = data)' где 'data' - это словарь, а не строка? IE 'Foo (fooField = json.loads (request.data))'? – Hamms
@Hamms Я получаю эту ошибку: TypeError: объект JSON должен быть str, а не «list» ... который задает вопрос, если JSON должен быть «str», то он не может быть jsonb [] даже при сохранении правильно (всегда будет текст []) – imdaveho
что делать, если вы пытаетесь что-то вроде 'Foo (fooField = {})'? – Hamms