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
THE END
二维码