Django JSONField-获取源文本

时间:2019-08-19 20:08:37

标签: django postgresql django-models django-orm

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

1 个答案:

答案 0 :(得分: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