【问题标题】:Order by method in model按模型中的方法排序
【发布时间】:2011-07-18 14:38:37
【问题描述】:

我有 2 个模型 CarRating。人们评价汽车(呃)。我写了一个简单的get_average_score() 方法,它得到了Car 的平均分,下面是我的模型。

class Car(models.Model):
  def get_average_score(self):
    return self.rating_set.aggregate(Avg('score'))

class Rating(models.Model):
  car = models.ForeignKey(Car)
  score = models.IntegerField(blank=False, null=False)

基本上我想要的是“顶级汽车”,我正在订购get_average_score() desc。

我该怎么做?

【问题讨论】:

    标签: python mysql django


    【解决方案1】:

    不,但您可以使用例如注释来做到这一点

    Car.objects.annotate(score=Avg('rating__score').order_by('-score')
    

    【讨论】:

    • 那将是 Avg,我认为您可以将该方法呈现为属性,因此我可以执行 order_by('-get_average_score')
    • 是的,抱歉,我认为您无法通过自定义方法订购。
    • 这是我要找的,但正如你所说,你不能通过自定义方法订购stackoverflow.com/questions/981375/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    相关资源
    最近更新 更多