Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

193
Vistas
Django queryset anota el campo para que sea una lista/conjunto de consultas

Estoy tratando de usar la anotación Django para crear un campo de conjunto de consultas que es una lista de valores de algún atributo de modelo relacionado.

 queryset = ... qs = queryset.annotate( list_field=SomeAggregateFunction( Case(When(related_model__field="abc"), then="related_model__id") ), list_elements=Count(F('list_field')) )

Estaba pensando en concatenar todas estas identificaciones con algún separador, pero no conozco las funciones apropiadas. Otra solución es hacer que queryset sea un conjunto de consultas. Sé que esta sintaxis es incorrecta. Gracias por cualquier ayuda.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si está usando postgresql y django >= 1.9 , podría usar funciones de agregación específicas de postgres, por ejemplo, ArrayAgg :

Devuelve una lista de valores, incluidos valores nulos, concatenados en una matriz.

En caso de que necesite concatenar estos valores usando un delimitador, también podría usar StringAgg .

about 4 years ago · Santiago Trujillo Denunciar

0

He hecho algo como eso:

 qs = queryset \ .annotate( field_a=ArrayAgg(Case(When( related_model__field="A", then="related_model__pk") )), field_b=ArrayAgg(Case(When( related_model__field="B", then="related_model__pk") )), field_c=ArrayAgg(Case(When( related_model__field="C", then="related_model__pk") )) )

Ahora hay listas de None o pk debajo de cada field_a , field_b y field_c para cada objeto en queryset. También puede definir otro valor predeterminado para Case en lugar de None .

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda