gpt4 book ai didi

django - 如何在 Django 中按 json 数组字段的最后一个元素进行过滤

转载 作者:行者123 更新时间:2023-12-05 08:11:01 26 4
gpt4 key购买 nike

我有一个模型 MyModel,它带有一个名为 dataJSONField。这个 json 字段包含一个对象数组,例如:

[
{
"date": "2021-01-01",
"amount": 120
},
{
"date": "2021-01-02",
"amount": 150
}
]

我想按数组最后一个元素的数量 进行过滤。从 Django 文档中,我了解到我可以使用以下方法按第一个元素进行过滤:

MyModel.objects.filter(data__0__amount__gte=100)

我如何使用最后一个元素来做到这一点?

最佳答案

Django 和 Postgres 的 -> 运算符非常乐意使用与 Python 相似的语义的负索引。所以,你可以这样说:

>>> MyModel.objects.values_list('data__-1__amount', flat=True)[0]
>>> 150

这是有效的,因为 .values_list() 是基于字符串的。

但是,由于 .filter() 需要 kwargs,而 data__-1__amount 不是有效的 Python kwarg 键,您需要这种形式:

MyModel.objects.filter(**{'data__-1__amount__gte': 100})

关于django - 如何在 Django 中按 json 数组字段的最后一个元素进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66639878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com