gpt4 book ai didi

Django - 在 ArrayField 中查询最新日期

转载 作者:行者123 更新时间:2023-11-29 13:18:51 24 4
gpt4 key购买 nike

我正在使用 Django 的 postgres ArrayField

假设我有这样一个模型:

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

class Event(models.Model):
name = models.CharField(max_length=200)
dates = ArrayField(models.DateField())

我想找到具有最新日期的Event。有没有一种方法可以构建可以做到这一点的查询集?

最佳答案

我无法深入了解 Django 的细节(我对它不是很精通)。但是,一些提示:

  1. 直接使用 SQL 语言,您将使用:

    SELECT
    name, (SELECT max(d) FROM unnest(dates) d) AS latest_date
    FROM
    Event ;
  2. 要将其反向转换到 Django,检查 Django Postgresql ArrayField aggregation ,并根据您的具体情况进行调整。

    我认为类似以下代码的内容应该可以解决问题1:

    Event.objects.annotate(arr_els=Func(F('dates'), function='unnest')) \
    .values_list('arr_els', flat=True).aggregate(Max('arr_els'))

请参阅 dbfiddle here 中的 SQL 示例.

1) 我没有合适的环境来测试 Django 部分...所以,这是未经测试的。

关于Django - 在 ArrayField 中查询最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45178088/

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