Pivotando dados e anotações complexas no Django ORM

O ORM no Django nos permite anotar facilmente (adicionar campos a) conjuntos de consultas com base em dados relacionados, no entanto, não consigo encontrar uma maneira de obter várias anotações para diferentes subconjuntos filtrados de dados relacionado

Isso está sendo perguntado em relação a django-helpdesk, um rastreador de problemas de código aberto, alimentado por Django. Preciso ter dados dinâmicos assim para fins de gráficos e relatórios

Considere estes modelos:

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)

E este conjunto de dados:

Queues:

ID | Name
---+------------------------------
1  | Product Information Requests
2  | Service Requests

Problemas

ID | Queue | Status
---+-------+---------
1  | 1     | open
2  | 1     | open
3  | 1     | closed
4  | 2     | open
5  | 2     | closed
6  | 2     | closed
7  | 2     | closed

Gostaria de ver uma anotação / agregação semelhante à seguinte:

Queue ID | Name                          | open | closed
---------+-------------------------------+------+--------
1        | Product Information Requests  | 2    | 1
2        | Service Requests              | 1    | 3

Esta é basicamente uma tabela de referência cruzada ou dinâmica, na linguagem Excel. No momento, estou construindo essa saída usando algumas consultas SQL personalizadas, no entanto, se eu puder passar para o Django ORM, posso filtrar mais facilmente os dados dinamicamente sem fazer uma inserção desonesta das cláusulas WHERE no meu SQL.

Para "pontos de bônus": como fazer isso quando o campo dinâmico status no exemplo acima) era uma data e queríamos que as colunas fossem meses / semanas / trimestres / dias?

questionAnswers(2)

yourAnswerToTheQuestion