(я новичок в python и django, поэтому, пожалуйста, потерпите меня на секунду. Я прошу прощения, если на этот вопрос ответили в другом месте и не смог его найти)
Допустим, у меня есть модель Link, и через приложение django-голосования пользователи могут голосовать за экземпляры ссылок. Как я могу заказать эти ссылки экземпляры в соответствии с их счетом, например. сначала отобразите те, у кого больше баллов.
Я предполагаю, что мог бы использовать менеджер get_top для django-голосования, но это дало бы мне только лучшие экземпляры ссылок и не учитывало бы другие параметры, которые я хотел бы добавить (например, те ссылки, которые принадлежат конкретный пользователь или пейджинг или что-то еще).
Я бы предположил написать собственный менеджер для моей модели Link, в котором я мог бы фильтровать набор запросов в соответствии с оценкой каждого элемента. Если я правильно понимаю, это потребует от меня циклического прохождения каждого элемента, проверьте его оценку, а затем поместите в него список (или словарь), который затем будет отсортирован в соответствии с оценкой каждого элемента. Это не будет возвращать набор запросов, но словарь с каждым элементом.
Я что-то здесь упускаю?
редактирование:
Вот урезанная версия модели Link:
class Link(models.Model):
user = models.ForeignKey('auth.User')
category = models.ForeignKey(Category)
date = models.DateTimeField( auto_now_add=True, null=True, blank=True )
is_deleted = models.BooleanField(default=False, blank=True)
links = ValidLinkManager()
objects = models.Manager()
и когда пользователь голосует, я вижу это:
Vote.objects.record_vote(link, user, vote)
где ссылка - это экземпляр Link, пользователь - это экземпляр auth.User, а голосование - 1, 0 или -1.
ValidLinkManager просто отфильтровывает те ссылки, для которых is_deleted имеет значение True.