Django Postgresql阵列字段聚合
在我的Django应用程序中,使用Postgresql,我有一个带有CharFields数组字段的模型。 我想知道是否有一种DB方法可以聚合并获得表中所有字符串的列表。例如:Django Postgresql阵列字段聚合,django,postgresql,django-queryset,aggregation,Django,Postgresql,Django Queryset,Aggregation,在我的Django应用程序中,使用Postgresql,我有一个带有CharFields数组字段的模型。 我想知道是否有一种DB方法可以聚合并获得表中所有字符串的列表。例如: [‘狗’、‘猫’] [“狗”] [“猫”] 将产生[‘狗’、‘猫’] 我知道如何在Python中实现这一点,但我想找到一种在DB级别上聚合这一点的方法。 在PostgreSQL中使用Django 1.8.4可以执行以下操作: SELECT DISTINCT UNNEST(array_column) FROM the_tab
在PostgreSQL中使用Django 1.8.4可以执行以下操作:
SELECT DISTINCT UNNEST(array_column) FROM the_table;
所以如果你的模型看起来像
class TheModel(models.Model):
# ...
array_field = ArrayField(models.CharField(max_length=255, blank=True),\
default=list)
# ...
Django等效值为:
from django.db.models import Func, F
TheModel.objects.annotate(arr_els=Func(F('array_field'), function='unnest'))\
.values_list('arr_els', flat=True).distinct()
我试图在任何子字段中进行筛选,如果我
.filter(id\uu not\u in=F('arr\u els')),则此注释在Django 1.9中似乎没有正确的类型。
我得到了不支持的自动字段的查找“not\u in”或不允许在字段上联接。