Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

259
Visualizações
¿Cómo agrupar con anotar en django?

Intenté absolutamente todo con valores(). anotar() o agregado() , o siguiendo tutoriales con Subquery no puedo obtener lo que quiero, déjame explicarte:

Esto es lo que obtengo con QuizzUserItem.objects.filter(examuser=user_exam).values('item__question', 'item')

 {'item': 759, 'item__question': 429} {'item': 762, 'item__question': 430} {'item': 763, 'item__question': 430} {'item': 767, 'item__question': 431}

Lo que quiero es agrupar por item__question y obtener este resultado:

 {'item': 759, 'item__question': 429} {'item': 762,763 'item__question': 430} {'item': 767, 'item__question': 431}

Empiezo a pensar que no hay absolutamente ninguna manera :/


Lo que probé:

QuizzUserItem.objects.filter(examuser=user_exam).values('item__question','item').annotate(items_number=Count('item__question'))

Obtuve :

 {'item': 759, 'item__question': 429, 'items_number': 1} {'item': 762, 'item__question': 430, 'items_number': 1} {'item': 763, 'item__question': 430, 'items_number': 1} {'item': 767, 'item__question': 431, 'items_number': 1}

o

 QuizzUserItem.objects.filter(examuser=user_exam).values('item__question').annotate(items_number=Count('item__question'))

Este es el resultado más cercano que obtuve:

 {'item__question': 429, 'items_number': 1} {'item__question': 430, 'items_number': 2} {'item__question': 431, 'items_number': 1}

Pero no tengo el item_ids 762,763...

Gracias por leer

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede trabajar con el agregado ArrayAgg [Django-doc] para obtener una lista de elementos:

 from django.contrib.postgres.aggregates import ArrayAgg QuizzUserItem.objects.filter( examuser=user_exam ).values( 'item__question' ).annotate( items=ArrayAgg('item') ).order_by('item__question')
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda