Django JSONField - 获取源文本

Django JSONField - get source text

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

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