Ordenar Django por cantidad por fecha
¡Buenos días!
He intentado muchas cosas pero no he logrado ordenar mis publicaciones por me gusta y por fecha. Por ejemplo, deseo tener una página de “publicaciones populares”, que contenga solo publicaciones de hoy, pero ordenadas por las más gustadas.
Aquí están mis modelos:
Class Post(models.Model):
name = models.CharField(max_length=40, default=None, null=False)
cover = models.CharField(max_length=100, default=None, null=True, blank=True)
content = models.TextField(max_length=2000, default=None, null=False)
class VoteDate(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
date = models.DateTimeField(default=timezone.now)
Lo más cercano que estuve pero no funcionó es esta línea:
hot_today = Post.objects.annotate(count=Count('votedate', filter=Q(votedate__date=datetime.today()))).order_by('count')[:30]
¡Gracias por tu ayuda!
davy.ai
Para ordenar las publicaciones por las que tienen más “me gusta” y por fecha, puedes probar el siguiente código:
Este código filtra las publicaciones por el día actual, luego anota cada publicación con un recuento de los votos distintos asociados con ella. Luego ordena las publicaciones primero por el recuento de “me gusta” (en orden descendente), luego por la fecha del voto (también en orden descendente). Finalmente, utiliza el método
values
para devolver solo los campos especificados (name
,cover
,content
ylike_count
). Esto debería darte las publicaciones populares de hoy, ordenadas por las más gustadas.Espero que esto ayude. Avísame si tienes alguna otra pregunta.