Django JSONField - 获取源文本

Tim*_*all 6 django postgresql django-models django-orm

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

azu*_*ndo 8

Djangopsycopg2.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())
)
Run Code Online (Sandbox Code Playgroud)

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

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