【发布时间】:2023-03-07 15:40:02
【问题描述】:
计算 ArrayField 列的所有不同值的最有效方法是什么。
假设我有一个名为 MyModel 和 cities 字段的模型,即 postgres.ArrayField。
#models.py
class MyModel(models.Model):
....
cities = ArrayField(models.TextField(blank=True),blank=True,null=True,default=list) ### ['mumbai','london']
假设我们的 MyModel 有以下 3 个对象,cities 字段值如下。
1. ['london','newyork']
2. ['mumbai']
3. ['london','chennai','mumbai']
- 对
cities字段的不同值进行计数是对整个列表进行计数,而不是对每个元素进行计数。
## Query
MyModel.objects.values('cities').annotate(Count('id')).order_by().filter(id__count__gt=0)
- 在这里,我想计算
cities字段列表的每个元素上cities字段的不同值。这应该会给出以下最终输出。
[{'london':2},{'newyork':1},{'chennai':1},{'mumbai':2}]
【问题讨论】:
标签: django django-models django-rest-framework django-forms django-templates