У меня есть модель, Rating
, которая выглядит примерно так:
class Rating(models.Model):
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
@property
def total(self):
return self.upvotes - self.downvotes
У меня есть группа рейтингов, которые мне нужно упорядочить по свойству total
. Как видите, это , а не значение, хранящееся в базе данных. rating_set.order_by("total")
не работает.
Я мог бы использовать функцию Python sorted
в списке оценок, с key=lambda r: r.total
. Но мне кажется, что это было бы довольно неэффективно, и, вероятно, существует лучший путь изнутри Джанго.
Поддерживает ли Django упорядочение по производным значениям? Могу ли я повысить производительность, сделав общее значение, хранящееся в базе данных?