У меня проблема с вставкой в поле с использованием ArrayField с внутренним JSONField.
models.py
locations = ArrayField(JSONField(null = True,blank = True), blank=True, null = True)
Вставить
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = location_arr
instance.save()
Когда я это сделаю, я получил
"location" столбца имеет тип jsonb [], но выражение имеет тип text []
LINE 1:... d "= 2517," locations "= ARRAY ['{" loc...
Подсказка: вам нужно будет переписать или применить выражение.
Итак, я попытался сбросить его, используя:
import json
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = json.dumps(location_arr)
instance.save()
то я получил это
LINE 1:... d "= 2517," locations "= '[{" loc ":...
ПОДРОБНОЕ ОПИСАНИЕ:" [" должно вводить явно заданные размеры массива.
Я использую:
- Django 1.9
- Python 2.7
- Postgres 9.4.10
- psycopg2 2.6.2