按关系模型排序

时间:2017-05-16 06:19:20

标签: python django django-models

我有以下模特:

bootstrap-sass-loader

我需要按订单价格和出价的出价排序订单,其中状态为== BID_STATES_IN_BIDS。

我怎样才能得到这个结果?

应该如下所示:

class Order(models.Model):
   price = models.DecimalField(verbose_name=_("Price"), default=0.0, decimal_places=2, max_digits=7)
   ...


class Bid(models.Model):
   order = models.ForeignKey(Order, verbose_name=_("Order"), related_name="orders")
   bid = models.DecimalField(verbose_name=_("Bid"), default=0.0, decimal_places=2, max_digits=7)
   status = models.IntegerField(verbose_name=_("Status"), choices=BID_STATUSES, default=BID_STATES_IN_BIDS)
   ...

2 个答案:

答案 0 :(得分:0)

orders = Order.objects.filter(bid__status=BID_STATES_IN_BIDS).order_by('price')

您可以在Source

找到有关反向查找的信息

答案 1 :(得分:0)

您可以使用filterorder_by

bids = Bid.objects.filter(status=BID_STATES_IN_BIDS).order_by('order__price', 'bid')
  

要按不同模型中的字段排序,请使用与查询模型关系时相同的语法。也就是说,字段的名称,后跟双下划线(__),后跟新模型中字段的名称,依此类推,因为您想要加入多个模型。