为了账号安全,请及时绑定邮箱和手机立即绑定

计算同一 jango 模型中另一个字段的不同值搜索中的不同值

计算同一 jango 模型中另一个字段的不同值搜索中的不同值

Cats萌萌 2023-07-11 15:40:49
我正在尝试从我的 django 模型表中提取一些分析。到目前为止,我可以计算字段的总值和字段的不同值。我还知道如何创建显示不同字段内字段总值的列表。现在我想计算一个字段出现在不同字段的已经不同值的列表中的不同实例。这是我正在使用的表:| uid   |  cid   ||-------|--------|| a     | apple  || a     | apple  || a     | grape  || b     | apple  || b     | grape  || c     | apple  || c     | pear   || c     | pear   || c     | pear   |所以我试图提供的结果是:cid: apple (distinct uid count: 3),cid: grape (distinct uid count: 2),cid: pear (distinct uid count: 1)并且:cid apple's distinct uid's: a, b, ccid grape's distinct uid's: a, bcid pear's distinct uid's: c到目前为止,我已经能够获得不同的计数和列表,如下所示:dist_uid_list = Fruit.objects.filter(client=user).values('uid').distinct()output >>> {'uid': 'a', 'uid': 'b', 'uid': 'c'}和这个:dist_uid_count = Fruit.objects.filter(client=user).values('uid').distinct().count()output >>> {3}以及更复杂的:total_actions_per_cid = Fruit.objects\            .filter(client=user)\            .values('cid').distinct()\            .annotate(num_actions=Count('action_name'))\            .order_by('cid')output >>> {'cid': 'apple', 'num_actions': '4'}{'cid': 'grape', 'num_actions': '2'}{'cid': 'pear', 'num_actions': '3'}所以问题是:我怎样才能进入并获取每个不同的“cid”并找到每个不同的“uid”中存在多少个不同的“uid”?
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

计数聚合有一个不同的参数,可能会有所帮助:


>>> q = Book.objects.annotate(Count('authors', distinct=True), Count('store', distinct=True))

https://docs.djangoproject.com/en/3.1/topics/db/aggregation/#combining-multiple-aggregations


因此您的查询将如下所示:


# I removed the distinct after .values, as the values works

# like a GROUP BY, thus you will get already unique 'cid's

total_actions_per_cid = Fruit.objects\

            .filter(client=user)\

            .values('cid') \

            .annotate(num_uids=Count('uid', distinct=True))


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信