Как добавить результаты из JSON, хранящиеся в POSTGRESQL? - PullRequest
0 голосов
/ 13 февраля 2020

Как добавить результаты из JSON, хранящегося в POSTGRESQL?

Однако в запросе возвращается ошибка.

Поле «сумма» имеет строковый формат. Есть ли что-нибудь, что вы можете преобразовать в целое число и добавить его SUM?

Я делаю это так.

Transactions.objects.filter(id=id, metadata__metadata__deleted='false')\
                                                                    .annotate(amount=RawSQL("metadata->>%s", ("amount", )))\
                                                                    .aggregate(amountTotal=Sum('amount'))

Transactions.objects.filter(id=id, metadata__metadata__deleted='false')\
                                                                    .annotate(l=RawSQL("data->>%s", (int("amount"),)))\
                                                                    .aggregate(clicked=Sum('l'))

django. db.utils.ProgrammingError: ссылка на столбец «метаданные» неоднозначна LIBERTYBLUE | ЛИНИЯ 1: ВЫБРАТЬ СУММУ ("l") ОТ (ВЫБРАТЬ (метаданные - >> 'сумма') КАК "l" FR ...

1 Ответ

0 голосов
/ 13 февраля 2020

Я не уверен, поможет ли это. Но ниже представлен подход, который я реализовал в своем проекте с использованием базы данных MySQL.

from django_mysql.models.fields.json import KeyTransform

Table.objects.all().annotate(amount = KeyTransform('json_key/Dictionary_key)', 'field_name')).aggregate(Sum('amount'))
...