首页 > 解决方案 > django jsonField 过滤以从指定键中获取值列表

问题描述

我将数百万个 jsonFields 作为一个字段存储在我的 django 模型中,结构如下:

对于对象 #1:

   {
     "key_1": value1
   }

对于对象 #2:

{
    "key_1": value2
}

依此类推...如何仅通过过滤获得键 1 的值数组?

[value1, value2...]

标签: djangodjango-postgresql

解决方案


你可以使用KeyTransform,基本上它允许你在 JSONField 中提取一个键并用它注释你的查询集。KeyTransform不在 django 文档中。

from django.contrib.postgres.fields.jsonb import KeyTransform

list(Item.objects.annotate(key_1=KeyTransform("json_field", "key_1")).values_list("key_1", flat=True))


推荐阅读