mee*_*son 3 django django-queryset django-annotate
这可能在某个地方,但不太确定如何询问。希望这会很快。假设我有一个如下表:
name count site
Guy Man 2 ABC
Guy Man 3 BCD
Guy Man 4 CDE
Girl Woman 2 ABC
Girl Woman 2 BCD
Girl Woman 3 CDE
Run Code Online (Sandbox Code Playgroud)
我想对这些进行注释,以便获得名称、总数和站点列表。因此,根据上面的数据,我会得到以下结果。
[
{
"name": "Guy Man",
"count_total": 9,
"site_list": "ABC, BCD, CDE"
},
{
"name": "Girl Woman",
"count_total": 7,
"site_list": "ABC, BCD, CDE"
}
]
Run Code Online (Sandbox Code Playgroud)
我明白如何获取count_total,但我不知道如何获取site_list。有任何想法吗?
PostgreSQL按名称字段结合ArrayAgg和distinct=True标志分组的解决方案:
from django.contrib.postgres.aggregates.general import ArrayAgg
from django.db.models import Count
Model.objects.values('name').annotate(
count_total=Count('count'),
site_list=ArrayAgg('site', distinct=True),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3562 次 |
| 最近记录: |