Ordenar modelos de Django por otro queryset de longitud de modelo.
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)
CATEGORÍAS_DE_GUSTO = (
(“ME GUSTA”, “ME GUSTA”),
(“NO ME GUSTA”, “NO ME GUSTA”)
)
class PostLike(models.Model):
_type = models.CharField(max_length=200, choices=CATEGORÍAS_DE_GUSTO, 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 el modelo Post según el número de “Me gusta” que tenga. El número de “Me gusta” de un post es el recuento de objetos PostLike que tienen _type = “ME GUSTA” y content = objecto_post.
¿Cómo puedo ordenar Post específicamente según el número de “Me gusta”?
davy.ai
Puedes ordenar
Publicaciones
basadas en el número de “me gusta” usando el métodoannotate
en la API deQuerySet
. El métodoannotate
te permite agregar un campo adicional al modelo dePublicaciones
que contiene el número de “me gusta” para cada publicación. Luego puedes usar el métodoorder_by
para ordenar los objetos dePublicaciones
basados en el número de “me gusta”.Por ejemplo:
Esto devolverá un
QuerySet
de objetos dePublicaciones
ordenados por el número de “me gusta”, siendo las publicaciones más gustadas las primeras.