Django의 ORM을 사용하면 관련 데이터를 기반으로 쿼리 세트에 쉽게 주석을 달 수 있습니다 (필드 추가). 관련 데이터의 여러 필터링 된 하위 세트에 대해 여러 주석을 얻는 방법을 찾지 못했습니다.Django ORM의 데이터 및 복잡한 주석 피벗
오픈 소스 Django-powered trouble-ticket tracker 인 django-helpdesk과 관련된 질문입니다.
CHOICE_LIST = (
('open', 'Open'),
('closed', 'Closed'),
)
class Queue(models.model):
name = models.CharField(max_length=40)
class Issue(models.Model):
subject = models.CharField(max_length=40)
queue = models.ForeignKey(Queue)
status = models.CharField(max_length=10, choices=CHOICE_LIST)
그리고이 데이터 집합 :
대기열 :
ID | Name
---+------------------------------
1 | Product Information Requests
2 | Service Requests
문제 나는
이 모델을 고려 데이터를 차트 및보고 목적으로이 같은 피벗이 필요합니다 :
ID | Queue | Status
---+-------+---------
1 | 1 | open
2 | 1 | open
3 | 1 | closed
4 | 2 | open
5 | 2 | closed
6 | 2 | closed
7 | 2 | closed
이 같은 주석/총 모양의 것을보고 싶다 :
Queue ID | Name | open | closed
---------+-------------------------------+------+--------
1 | Product Information Requests | 2 | 1
2 | Service Requests | 1 | 3
이 엑셀 말투에, 기본적으로 크로스 탭 또는 피벗 테이블입니다. 현재 일부 사용자 지정 SQL 쿼리를 사용하여이 출력을 작성하고 있지만 Django ORM을 사용하여 이동할 수 있으면 WHERE 절을 SQL에 삽입하지 않고도 데이터를보다 쉽게 필터링 할 수 있습니다.
"보너스 포인트"의 경우 : 위의 피벗 필드 (위의 예에서 status
)가 날짜 인 경우 어떻게해야하며 월/주/분기/일로 설정해야합니까?
이 표는 크고 거의 일반용으로 간주 할 수없는 경우 무너질 것입니다. – JohnnyM
몇 년 후이 책을 읽은 독자에게 :'collections.defaultdict '객체는'count '와 같은 속성을 갖지 않습니다. python3은 또한'summary.count (q.'closed')' –