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

149
Vistas
Django model order_by basado en otro modelo de longitud de conjunto de consultas

tengo 2 modelos:

models.py

 class Post(models.Model): title = models.CharField(max_length=255) desc = models.CharField(max_length=500) content = models.TextField() uploadedBy = models.ForeignKey(User, on_delete=models.CASCADE) LIKE_CATEGORIES = ( ("LIKE", "LIKE"), ("DISLIKE", "DISLIKE") ) class PostLike(models.Model): _type = models.CharField(max_length=200, choices=LIKE_CATEGORIES, blank=True, null=True) content = models.ForeignKey( Post, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) created = models.DateTimeField(auto_now_add=True)

Quiero ordenar la Post según la cantidad de Me gusta que tiene una publicación. El número de Me gusta que tiene una publicación es el recuento de objetos PostLike que tienen _type="LIKE",content=post_object .

¿Cómo puedo ordenar una Post específicamente en función de la cantidad de Me gusta?

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

0

Puede anotar cada publicación con unrecuento de objetos PostLike relacionados, esto puede tener un filtro para contar solo los objetos relacionados que cumplen una condición. Luego ordenar por la anotación

 from django.db.models import Count, Q Post.objects.annotate( likes=Count('postlike', filter=Q(postlike___type="LIKE")) ).order_by('-likes')

No estoy seguro de que tener un campo con un prefijo de subrayado sea la mejor idea, puede estropear el ORM y otras partes internas de Django.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto restringirá su filtro a Publicar con LIKE y también lo clasificará

 from django.db.models import Count Post.objects.filter(postlike___type='LIKE').annotate(likes=Count('postlike')).order_by('-likes') Or from django.db.models import Count Post.objects.filter(postlike___type='LIKE').annotate(Count('postlike'))[::-1]
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