Django Postgresql阵列字段聚合

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

在我的Django应用程序中,使用Postgresql,我有一个带有CharFields数组字段的模型。 我想知道是否有一种DB方法可以聚合并获得表中所有字符串的列表。例如:

  • [‘狗’、‘猫’]
  • [“狗”]
  • [“猫”]
  • 将产生[‘狗’、‘猫’]

    我知道如何在Python中实现这一点,但我想找到一种在DB级别上聚合这一点的方法。
    在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”或不允许在字段上联接。