В настоящее время я работаю над сайтом (с Джанго), где люди могут написать историю, за которую могут проголосовать сами или другие люди.Вот классы для Profile, Story и Upvote:
class Profile(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(unique=True)
first_name = models.CharField(max_length=30, null=True)
last_name = models.CharField(max_length=30, null=True)
class Story(models.Model):
author = models.ForeignKey('accounts.Profile', on_delete=models.CASCADE, related_name="author")
title = models.CharField(max_length=50)
content = models.TextField(max_length=10000)
class Upvote(models.Model):
profile = models.ForeignKey('accounts.Profile', on_delete=models.CASCADE, related_name="upvoter")
story = models.ForeignKey('Story', on_delete=models.CASCADE, related_name="upvoted_story")
upvote_time = models.DateTimeField(auto_now=True)
Как видите, Upvote использует два внешних ключа для хранения upvoter и связанной истории.Теперь я хочу сделать запрос, который дает мне все истории, отсортированные по количеству голосов, которые они имеют.Я изо всех сил пытался придумать несколько запросов сам, но это не совсем то, что я ищу.
Этот не работает вообще, так как он просто дает мне все истории вПорядок их создания по какой-то причине.Также он содержит дубликаты, хотя я хочу, чтобы они были сгруппированы по истории.
hot_feed = Upvote.objects.annotate(upvote_count=Count('story')).order_by('-upvote_count')
Это один из видов работ.Но если я пытаюсь получить доступ к частичной истории в моем шаблоне, он просто возвращает мне идентификатор.Поэтому я не могу получить заголовок, автора и содержимое этого идентификатора, поскольку это просто целое число, а не объект.
hot_feed = Upvote.objects.values('story').annotate(upvote_count=Count('story')).order_by('-upvote_count')
Может кто-нибудь помочь мне с поиском запроса?ищете?