本文介绍了Django Postgresql ArrayField聚合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
['dog','cat'] ['dog'] ['cat']
在我的Django应用程序中,使用Postgresql,我有一个具有CharFields的ArrayField的模型。 我想知道是否有一种DB方式聚合并获取表中所有字符串的列表。例如:
In my Django application, using Postgresql, I have a model with an ArrayField of CharFields. I would like to know if there's a DB way to aggregate and get a list of all the strings in the table. For example:
会产生['dog','cat']
would yield ['dog', 'cat']
我知道如何在Python中执行此操作,但是想要找出一种在数据库级别聚合的方法。 使用Django 1.8.4
I know how to do that in Python but would like to find out a way to aggregate this on the DB level. Using Django 1.8.4
推荐答案在PostgreSQL中,您可以执行以下操作:
In PostgreSQL you can do the following:
SELECT DISTINCT UNNEST(array_column) FROM the_table;所以如果你的模型看起来像
So if your model looks something like
class TheModel(models.Model): # ... array_field = ArrayField(models.CharField(max_length=255, blank=True),\ default=list) # ...Django的等价物是: / p>
the Django equivalent is:
TheModel.objects.annotate(arr_els=Func(F('array_field'), function='unnest'))\ .values_list('arr_els', flat=True).distinct()更多推荐
Django Postgresql ArrayField聚合
发布评论