python - Postgres 9.4 Django 1.9 获取所有 json 键

标签 python json django postgresql

我在 Django 模型中有一个 JSONField,如下所示:

from django.db import models
from django.contrib.postgres.fields import JSONField

class File(models.Model):
    metadata = JSONField(null=True, blank=True, default={})

元数据可以填充用户喜欢的任何内容。

我希望能够列出所有文件对象使用的所有唯一元数据键。

有没有办法使用 django 和 postgres 聚合来做到这一点?

最佳答案

您可以使用 Django 的 Func() 表达式 ( docs ) 来使用 Postgres 函数 jsonb_object_keys( docs )

class JsonKeys(Func):
    function = 'jsonb_object_keys'

现在你可以写了

File.objects.all().annotate(metadata_keys=JsonKeys('metadata')

关于python - Postgres 9.4 Django 1.9 获取所有 json 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35187721/

相关文章:

json - 如何在jq中分组?

android - 在 android 中使用 HttpURLConnection 发送 JSON 和图像

python - 为什么这会给我留下 2 个相同的 DF?

python - NetworkX 访问具有多个节点属性的节点

python - 为什么我得到这个 "module ' nltk.translate.metrics' 没有属性 'precision' ”?

java - 如何从 JSON 文档替换反斜杠 ("\\\\")?

Django,我删除了AnonymousUser,如何恢复

python - 属性错误 : 'int' object has no attribute 'get'

Django-taggit 如何获取所有标签

python - pandas 解码字符串返回 NaN