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

281
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 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