python - 获取 ArrayField Postgres Django 的 len

标签 python django postgresql

我有一个模型:-

class ModelA(models.Model):
    field1 = ArrayField(models.IntegerField())

我想获取 ModelA 的前 10 个对象,其最大长度为 field1。我看到 len 过滤器在 Django Docs 中可用。 ,但这不符合我的目的。

如何获取最大长度为 field1 的 top10 对象?

最佳答案

如果你确定你的数组是一维的,你可以使用 PostgreSQL 函数 cardinality

ModelA.objects.extra(select={'length':'cardinality(field1)'}).order_by('length')

或者,使用 array_length 函数(第二个参数是寻求的维数)

ModelA.objects.extra(select={'length':'array_length(field1,1)'}).order_by('length')

关于python - 获取 ArrayField Postgres Django 的 len,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621502/

相关文章:

database - Django 模型通用建模

python 和 postgres 总是共享一个 CPU 内核?

postgresql - 使用 Terraform 在 AWS RDS PostgreSQL 上启用 PostGIS

Postgresql hstore 按数字数据存储和搜索

python - 使用 operator.itemgetter 对字典进行排序

javascript - 当 Django 中的确认消息为假时什么也不做

python - 算术运算中的奇怪类型提升

sql - 在PostgreSQL的同一查询中如何使用两个SUM()聚合函数?

python - 如何在 matplotlib 中使箭头长度更长?

python - Python 中的 WooCommerce API OAuth