Django从PostgreSQL特定的ArrayField中获取最小值和最大值,其中包含IntegerField(s)

我的模型中有一个ArrayField持有IntegerFields。我正在寻找可以从该数组中提取最小和最大整数的最佳方法。

Django 文档没有给出类似的例子,我想知道正确的方法是否是找出如何以及是否可以在这个 ArrayField 上使用聚合函数,或者我是否可以以某种方式将其转换为正常的 Python整数列表并使用内置最小,最大功能?

执行此操作的任何建议都会有所帮助。例子更多。

回答

Python 的 max 和 min 函数似乎可以做到。

型号定义:

from django.contrib.postgres.fields import ArrayField

class TestArrayField(models.Model):
    integers = ArrayField(
        models.IntegerField()
    )

示例数据(两个TestArrayField模型实例,每个实例都有一个 数组IntegerFields):

这将返回给定实例的最小值/最大值TestArrayField

def test_array_field(request):
    # grabbing the first one, you could use .filter() instead
    integers_array = TestArrayField.objects.first().integers
    max_integer = max(integers_array)
    min_integer = min(integers_array)

    # printing output..
    print(integers_array)
    print('max_integer:', max_integer)
    print('min_integer:', min_integer)

这是输出:

[6, 8, 10, 12]
max_integer: 12
min_integer: 6


以上是Django从PostgreSQL特定的ArrayField中获取最小值和最大值,其中包含IntegerField(s)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>