问题标签 [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.

0 投票
6 回答
6095 浏览

python - Django Admin:JSONField 默认空字典不会保存在管理员中

在我的模型定义中,我有

我创建了一个默认管理员

当我尝试在不触及该字段的情况下进行保存时,出现this field is required错误。

字段是必需的

它看起来像一个表单验证问题,因为我可以毫无问题地以编程方式从代码中保存模型实例。

为什么会这样?
我错过了什么傻事吗?

0 投票
2 回答
166 浏览

django - 使用 Django 的 JSONField 进行注释和常规查找有什么区别?

您可以通过直接查找或使用注释来查询 Django 的 JSONField。现在我意识到,如果你注释一个字段,你可以进行各种复杂的查询,但是对于非常基本的查询,哪一种实际上是首选方法?

示例:假设我有这样的模型

然后我使用以下命令存储一个对象:

现在,我想要的查询是最基本的:查找所有文档 where data__nameis 'Foo'。我可以通过两种方式做到这一点,一种使用注释,一种不使用,如下所示:

那么具体有什么区别呢?如果我可以进行基本查询,为什么我需要注释?当然,前提是我不会进行复杂的查询。

0 投票
1 回答
525 浏览

python - Django JSONField 不保存 0 值

我的模型中有一个 JSONField,当我尝试在 django 管理页面的 json 中将 0 保存为值时,它将值保存为 null。如何将零保存为值?Django 版本:2.1.7

Django 管理页面:

在此处输入图像描述

我的 JSON 字段:

我的输入:

它保存如下:

验证器:

0 投票
3 回答
290 浏览

python - 过滤 Django JSONField 中的列表项

这是我正在研究的 Django 模型的简化版本。

信息 JSONField 如下所示:

我正在尝试获取在任何课程中至少获得 10 分的所有学生的列表(结果 >= 10)。但是,我无法找到相应地过滤 QuerySet 的方法。

我正在尝试做这样的事情:

但是由于学生是一个列表,我无法直接访问每个项目的结果属性。此外,我认为它不会从结果中排除“Alice”对象。

我想得到这样的结果:

如果有办法将过滤的学生和课程类别联系起来,则可以加分:

我怎样才能达到预期的效果?

0 投票
1 回答
544 浏览

python - django JSONField 包含大于

我有Item带有 JSON 字段的模型

样本内容: [{"value": 50, name: "other"}, {"value": 60, name: "other2"}]

如何查询存在大于 50 的“值”的所有行?

我试过了

我已经设法查询了一个确切的值

0 投票
1 回答
1991 浏览

django - 如何使用 DjangoJSONEncoder 正确反序列化存储在 JSONField 中的日期时间对象?

我将datetime对象存储在JSONFieldDjango 2.1和 PostgreSQL 中,但在查询数据库时找不到正确反序列化它们的方法:

我尝试使用DjangoJSONEncoderwhich 可以正常进行序列化。但是反序列化不能正常工作

我究竟做错了什么 ?我需要扩展DjangoJSONEncoder或提供.from_db_value()自定义方法吗?

0 投票
1 回答
424 浏览

django - Django 过滤器没有使用 Postgresql JSONField 上的索引

我有一个 Django 模型,其中包含PostgreSQL jsonb field

数据字段包含一个username属性。

我已通过以下方式索引此属性

当我通过带有 id 的 Django ORM 查询它时,

并通过 pgAdmin

他们都很快。

但是当我使用 JSONField 的属性用户名查询时,pgAdmin SQL 查询

仍然同样快,而

非常慢。

似乎 Django ORM 没有使用username属性上的索引。

为什么呢?我可以在 Django ORM 中明确强制索引吗?有解决方法吗?

0 投票
1 回答
578 浏览

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')

或类似的东西

感谢您对此的任何意见...!

0 投票
0 回答
521 浏览

django - 如何计算 django jsonfield 中的键数

我想创建一个查询集过滤器来识别在模型的 jsonfield 中具有给定数量的键的所有模型实例。

我试图创建一个自定义查找(#1)来额外的 json 字段中的键,

并希望将它们聚合到一个数组中并使用数组的 __len 查找来制作我的过滤器。不幸的是,我被困在似乎不起作用的聚合上(#2)。

1

2

我得到的错误是:提示:您也许可以将 set-returning 函数移动到 LATERAL FROM 项目中。

有人已经尝试过执行此任务吗?

0 投票
1 回答
522 浏览

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))