【问题标题】:How to filter by the last element of a json array field in Django如何在Django中按json数组字段的最后一个元素进行过滤
【发布时间】:2021-06-12 19:56:26
【问题描述】:

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

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

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

MyModel.objects.filter(data__0__amount__gte=100)

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

【问题讨论】:

    标签: django postgresql django-postgresql django-jsonfield


    【解决方案1】:

    过滤器总是返回一个对象列表,即使在这种情况下只有一个大于 100 的对象存储在同一实例的数据字段“数据”中:

    last = MyModel.objects.filter(amount__gte=last.data[-1]["amount"])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 2021-02-14
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2022-09-23
      相关资源
      最近更新 更多