Django:如何根据两列

时间:2016-10-13 06:09:27

标签: django django-queryset

我希望根据approval_transaction_type和approval_type列获取此表的用户ID计数。

enter image description here

预期的结果是。

审批交易类型ID(60)

  • 审批类型ID(65)= 2个用户
  • 审批类型ID(64)= 2个用户
  • 审批类型ID(63)= 2个用户
  • 审批类型ID(62)= 2个用户
  • 审批类型ID(61)= 2个用户

我目前要实现的代码是这样,但是它会覆盖子列表并返回不正确的结果(我不明白为什么最后一个数组会覆盖所有数组):

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)

如何在不循环的情况下获取计数并使用查询集? 如果有什么不清楚的话,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:2)

可以在一个查询中完成。基于此Django equivalent for count and group by

Model.objects.values('approval_type').annotate(Count('user'))