【问题标题】:Django JSONField - get source textDjango JSONField - 获取源文本
【发布时间】:2019-12-25 01:28:34
【问题描述】:

使用 JSONField 时,读取值时内容会自动从 JSON 解码为 python 对象。我有一个用例,我将字符串编码回 JSON 以嵌入到模板中。有没有办法从对象中获取原始 JSON 字符串?

【问题讨论】:

  • 您可以使用json.dumps 将 Python 对象转换为 JSON blob。
  • @WillemVanOnsem - 我知道。这不是我要问的。而不是json.dumps(json.loads(json_string)) 我只想得到json_string

标签: django postgresql django-models django-orm


【解决方案1】:

Django 在后台使用psycopg2.extras.Json。您需要将该字段转换为文本以将原始文本作为纯文本 [1]。使用 django 的 Cast 函数 [2] 来注释您的查询集:

from django.db.models.functions import Cast
from django.db.models import TextField

models_with_json_text = Model.objects.annotate(
    json_as_text=Cast("json_field_name", TextField())
)

[1]http://initd.org/psycopg/docs/extras.html#json-adaptation

[2]https://docs.djangoproject.com/en/2.2/ref/models/database-functions/#cast

【讨论】:

  • 我希望有类似json_field_name__text 的东西,但希望我必须自己写models.Field。这是一个惊喜!谢谢!
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 2016-07-23
  • 2016-08-07
  • 2013-01-01
  • 2017-04-12
  • 2017-12-20
  • 2020-10-16
  • 2016-11-26
相关资源
最近更新 更多