ДУБЛИРОВАНИЕ: Использование пользовательской модели Django свойство метода в order_by()
У меня есть две модели; один, в котором хранятся сообщения, и другой, в котором хранятся голоса, сделанные по этим сообщениям, связанные с использованием поля ForeignKey. Каждое голосование хранится как отдельная запись, так как мне нужно отслеживать пользователя и дату и время, когда было подано голосование.
Я создал вспомогательную функцию, которая подсчитывает все голоса, используя функцию суммирования Django 1.1.
class Post(models.Model):
...some fields...
def tally(self):
return self.vote_set.all().aggregate(Sum('value'))['value__sum'] or 0
class Vote(models.Model):
post = models.ForeignKey(Post)
value = models.IntegerField()
...some fields...
Один запрос, который мне нужно сделать, должен выполнить один из order_by
подсчета. Тем не мение:
Post.objects.all().order_by('tally')
выдает следующую ошибку шаблона:
Обнаружено исключение при рендеринге: невозможно преобразовать ключевое слово «tally» в поле. Возможные варианты: date_created, описание, идентификатор, is_active, имя, связанный, слаг, пользователь, голосование.
Есть ли способ заставить функцию order_by()
принимать вызываемый объект?