Получение наибольшего количества лайков пользователей с помощью Django

class Profile(models.Model):
    ..
    goldcoin = models.IntegerField(default=0)

    likes = models.ManyToManyField(User, blank=True, related_name='user_like')
    dislikes = models.ManyToManyField(User, blank=True, related_name='user_dislike')

    def __str__(self):
        return self.user.username
    
    def get_avatar(self):
        ..

от likes = models.ManyToManyField(User, blank=True, related_name='user_like') Как получить наибольшее количество лайков пользователя?

Пример, у меня есть такой пользователь

  • User Likes
  • Jhon 30
  • Аиш 25
  • Джош 5
  • Адам 50

Выход

  • User Likes
  • Адам 50
  • Джон 30
  • Аиш 25
  • Джош 5

Django 4.0.6 Python 3.10.2

Вы можете собрать общее количество лайков, используя Count, а затем упорядочить набор запросов по общему количеству лайков следующим образом:

from django.db.models import Count

profiles = Profile.objects.annotate(total_likes=Count('likes')).order_by('total_likes')
Вернуться на верх