问题标签 [django-jsonfield]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - 使用 Django 的 JSONField 进行注释和常规查找有什么区别?
您可以通过直接查找或使用注释来查询 Django 的 JSONField。现在我意识到,如果你注释一个字段,你可以进行各种复杂的查询,但是对于非常基本的查询,哪一种实际上是首选方法?
示例:假设我有这样的模型
然后我使用以下命令存储一个对象:
现在,我想要的查询是最基本的:查找所有文档 where data__name
is 'Foo'
。我可以通过两种方式做到这一点,一种使用注释,一种不使用,如下所示:
那么具体有什么区别呢?如果我可以进行基本查询,为什么我需要注释?当然,前提是我不会进行复杂的查询。
python - 过滤 Django JSONField 中的列表项
这是我正在研究的 Django 模型的简化版本。
信息 JSONField 如下所示:
我正在尝试获取在任何课程中至少获得 10 分的所有学生的列表(结果 >= 10)。但是,我无法找到相应地过滤 QuerySet 的方法。
我正在尝试做这样的事情:
但是由于学生是一个列表,我无法直接访问每个项目的结果属性。此外,我认为它不会从结果中排除“Alice”对象。
我想得到这样的结果:
如果有办法将过滤的学生和课程类别联系起来,则可以加分:
我怎样才能达到预期的效果?
python - django JSONField 包含大于
我有Item
带有 JSON 字段的模型
样本内容:
[{"value": 50, name: "other"}, {"value": 60, name: "other2"}]
如何查询存在大于 50 的“值”的所有行?
我试过了
我已经设法查询了一个确切的值
django - 如何使用 DjangoJSONEncoder 正确反序列化存储在 JSONField 中的日期时间对象?
我将datetime
对象存储在JSONField
Django 2.1和 PostgreSQL 中,但在查询数据库时找不到正确反序列化它们的方法:
我尝试使用DjangoJSONEncoder
which 可以正常进行序列化。但是反序列化不能正常工作
我究竟做错了什么 ?我需要扩展DjangoJSONEncoder
或提供.from_db_value()
自定义方法吗?
django - Django 过滤器没有使用 Postgresql JSONField 上的索引
我有一个 Django 模型,其中包含PostgreSQL jsonb field
:
数据字段包含一个username
属性。
我已通过以下方式索引此属性
当我通过带有 id 的 Django ORM 查询它时,
并通过 pgAdmin
他们都很快。
但是当我使用 JSONField 的属性用户名查询时,pgAdmin SQL 查询
仍然同样快,而
非常慢。
似乎 Django ORM 没有使用username
属性上的索引。
为什么呢?我可以在 Django ORM 中明确强制索引吗?有解决方法吗?
python - 是否有用于查询嵌套 jsonfield 键的 django-orm 查找?
我的表有一个名为meta_data的 JsonField 列。它的条目之一是:
{'abc':'zyz', 'name':{'pranav':'age', 'john':'age'}}
要查询 Jsonfield,我使用__has_key
查找:
table.objects.filter(id__in=id_list, meta_data__has_key='name')
我想知道是否有一些 django 查找可以帮助我检查'pranav'
里面是否有密钥,'name'
例如:
table.objects.filter(id__in=id_list, meta_data__has_key__has_key='pranav')
或类似的东西
感谢您对此的任何意见...!
django - 如何计算 django jsonfield 中的键数
我想创建一个查询集过滤器来识别在模型的 jsonfield 中具有给定数量的键的所有模型实例。
我试图创建一个自定义查找(#1)来额外的 json 字段中的键,
并希望将它们聚合到一个数组中并使用数组的 __len 查找来制作我的过滤器。不幸的是,我被困在似乎不起作用的聚合上(#2)。
1
2
我得到的错误是:提示:您也许可以将 set-returning 函数移动到 LATERAL FROM 项目中。
有人已经尝试过执行此任务吗?
django - 使用 JSONField() 优化 API 查询
初始开放:我正在使用 postgresql JSONFields。
我的模型中有以下attribute
(字段)User
:
我目前基本上使用 DRF 为前端的每个用户序列化好处:
由于底层返回的收益变化很小而且很慢,所以我考虑每次发生变化时都将JSON“缓存”在数据库中以提高UserBenefit.objects.filter(user=user)
QuerySet的性能。相反,成为user.benefits
并有望减轻超过 10 万用户的数据库负载。
第一个问题:
我应该这样做吗?
第二问:
有没有一种有效的方法来编写对应serializer.data
<class 'rest_framework.utils.serializer_helpers.ReturnList'>
于 JSON 字段的内容?
我目前正在使用:
data = serializers.serialize("json", UserBenefit.objects.filter(user=self))