首页 > 解决方案 > 在 JSON 字段中使用第一个键进行注释

问题描述

我有 JSON 类型字段的模型

json_field_name {“123”:“1”,“145”:“2”}

我想使用 annotate 函数创建一个新列 "json_first_key" ,它将包含每个 json 中的 First 键。

我想要一个新的带注释字段 - "json_first_key" ,它只包含 json 中的第一个键。即 "123" ,在这种情况下

我可以使用 rawSQL query 做同样的事情。我想使用 Django ORM 来代替。我正在使用 Postgresql 数据库。

使用 RawSQL

models = Model.objects..annotate(
            json_first_key=RawSQL(
                    """select first_key from (select distinct on (id) id,jsonb_object_keys(json_field_name) AS first_key FROM app_model) as model_row where model_row.id = app_model.id limit 1""",
                    [],
            )
        ) 

标签: pythondjangopostgresqldjango-modelsdjango-orm

解决方案


推荐阅读