Как я могу прочитать словарь из базы данных, не превращая его в строку на django? - PullRequest
0 голосов
/ 22 января 2020

Моя база данных содержит словарь. Когда я читаю словарь из базы данных и пытаюсь что-то с ним сделать, происходит сбой, потому что словарь автоматически преобразован в строку. Есть ли способ избежать Django превращения диктанта в строку?

JSON stored in database

Ответы [ 3 ]

1 голос
/ 22 января 2020

Вы также можете использовать простые json .loads () и простые json .dumps () для десериализации и сериализации словаря. Это немного больше работы, но это гарантирует, что вы не зависите от базы данных.

0 голосов
/ 22 января 2020

Решил проблему с помощью ответов, которые я получил здесь.

При захвате и сохранении JSON из webhook (так вот откуда в моем проекте исходит JSON), у меня было сделать странный шаг сериализации и десериализации JSON перед сохранением его в моей базе данных. Этот процесс избавил от всех символов \ r и \ t, которые передаются request.body, но делают JSON недействительным:

t = Transaction(data=json.dumps(json.loads(request.body)))
t.save()

Для загрузки JSON из базы данных в python словарь, который я могу затем использовать в своем коде, который я использовал json .loads:

data = json.loads(t.data)
0 голосов
/ 22 января 2020

Есть варианты для MySQL и Postgres, но я не думаю, что есть эквивалент для sqlite.

Для MySQL JSONField: https://django-mysql.readthedocs.io/en/latest/model_fields/json_field.html

Аналогично для Postgres: https://docs.djangoproject.com/en/3.0/ref/contrib/postgres/fields/#jsonfield

Есть встроенная поддержка для запроса содержимого полей, что довольно аккуратно. В документах приведены примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...