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

283
Vistas
¿Cómo mezclar múltiples conjuntos de consultas en uno y reordenarlos por tiempo de creación?

Estoy aprendiendo Django y todavía soy principiante. Para practicar, estoy tratando de hacer un sitio web de redes sociales de demostración. En mi proyecto, los usuarios pueden crear grupos, luego pueden publicar y comentar allí. En la página de inicio, estoy tratando de agregar una sección como 'actividades recientes' donde un usuario puede ver actividades recientes en ese sitio web como "John creó un grupo 'Javascript', Tim publicó un comentario en 'Python', Sarah publicó en ' CSS'" Ahora he hecho algunas consultas como: groups = Group.objects.all().order_by('-created')[0:5] posts = Post.objects.all().order_by('-created')[0:5] comments = Comment.objects.all().order_by('-created')[0:5]

Quiero mezclarlos todos en un solo conjunto de consultas. Luego ordénelos todos por el momento en que fueron creados. Sé que es una pregunta tonta y he estado atrapado aquí desde la mañana. ¿Me pueden ayudar y mostrarme el proceso por favor?

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

0

Puede encadenarlos y ordenarlos por el campo created con:

 from operator import attrgetter groups = Group.objects.order_by('-created')[:5] posts = Post.objects.order_by('-created')[:5] comments = Comment.objects.order_by('-created')[:5] all_items = sorted( [*groups, *posts, *comments] , key= attrgetter('created') , reversed=True )

Ahora all_items es una lista heterogénea con diferentes tipos de objetos. Esto hará que el proceso de renderizado sea un poco más complicado, ya que un comment probablemente tenga campos diferentes a los de una Post por ejemplo.

over 4 years ago · Santiago Trujillo Denunciar

0

También puede usar la función de chain del módulo itertools para combinar los conjuntos de consultas y luego ordenarlos en orden inverso usando el campo created como clave.

 from itertools import chain groups = Group.objects.all()[0:5] posts = Post.objects.all()[0:5] comments = Comment.objects.all()[0:5] queryset = sorted( chain(groups, posts, comments), key=lambda instance: instance.created, reverse=True )
over 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