2016-10-13 1 views
0

열 approval_transaction_type 및 approval_type에 따라이 테이블의 사용자 ID 수를 가져 오려고합니다.Django : 두 열에 따라 특정 열의 수를 얻는 방법

enter image description here

이 예상되는 결과가 될 것입니다.

승인 트랜잭션 타입 ID (60)

  • 승인 타입 ID (65) = 2 사용자
  • 승인 타입 ID (64) = 2 사용자
  • 승인 타입 ID (63) = 2 사용자
  • 승인 타입 ID (62) = 2 사용자
  • 승인 타입 ID (61) = 2 사용자
,174,

달성하기 위해 내 현재 코드이이지만, 하위 목록을 덮어 쓰고 (마지막 배열이 모든 배열을 덮어 쓰게됩니다 내가 왜 이해가 안 돼요) 잘못된 결과를 반환

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) 

내가 어떻게 할을 루핑하지 않고 카운트를 받고 쿼리 세트를 사용합니까? 이것에 대해 명확하지 않은 것이 있으면 알려주십시오. 감사!

+0

Django> 1.8에는 조건부 집계가 있습니다. https://docs.djangoproject.com/en/1.10/ref/models/conditional-expressions/를 참조하십시오. 케이스 기능을 사용할 수 있습니다. – wrdeman

+0

[Django 상당 수 및 그룹 기준] 가능한 복제본 (http://stackoverflow.com/questions/327807/django-equivalent-for-count-and-group-by) –

답변

2

하나의 쿼리로 수행 할 수 있습니다. 이것에 기초하여 Django equivalent for count and group by

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

감사합니다 남자! 정말 필요한 걸 – Binsoi

관련 문제