Django:如何根据两列获取特定列的计数
Django: How to get count of a specific column according to two columns
我想根据 approval_transaction_type 和 approval_type.
列获取此 table 的用户 ID 的计数
预期的结果是。
批准交易类型 ID (60)
- 批准类型 ID (65) = 2 个用户
- 批准类型 ID (64) = 2 个用户
- 批准类型 ID (63) = 2 个用户
- 批准类型 ID (62) = 2 个用户
- 批准类型 ID (61) = 2 个用户
我目前要实现的代码是这样的,但是它覆盖了子列表和returns不正确的结果(我不明白为什么最后一个数组会覆盖所有数组):
for transaction in transaction_types:
# Initial Array
transaction["approval_types"] = []
for approval_type in approval_types:
# Get Count of Users
approval_type["count"] = Model.objects.filter(approval_transaction_type=transaction['id'],approval_type=approval_type['id']).values().count()
# Assign this sub list to main list
transaction["approval_types"].append(approval_type)
如何在不循环的情况下获取计数并使用查询集?
如果对此有任何不清楚的地方,请告诉我。谢谢!
一次查询即可完成。基于此Django equivalent for count and group by
Model.objects.values('approval_type').annotate(Count('user'))
我想根据 approval_transaction_type 和 approval_type.
列获取此 table 的用户 ID 的计数预期的结果是。
批准交易类型 ID (60)
- 批准类型 ID (65) = 2 个用户
- 批准类型 ID (64) = 2 个用户
- 批准类型 ID (63) = 2 个用户
- 批准类型 ID (62) = 2 个用户
- 批准类型 ID (61) = 2 个用户
我目前要实现的代码是这样的,但是它覆盖了子列表和returns不正确的结果(我不明白为什么最后一个数组会覆盖所有数组):
for transaction in transaction_types:
# Initial Array
transaction["approval_types"] = []
for approval_type in approval_types:
# Get Count of Users
approval_type["count"] = Model.objects.filter(approval_transaction_type=transaction['id'],approval_type=approval_type['id']).values().count()
# Assign this sub list to main list
transaction["approval_types"].append(approval_type)
如何在不循环的情况下获取计数并使用查询集? 如果对此有任何不清楚的地方,请告诉我。谢谢!
一次查询即可完成。基于此Django equivalent for count and group by
Model.objects.values('approval_type').annotate(Count('user'))