我正在尝试做一些对于 Django 当前的 ORM 功能来说可能过于复杂的事情。但是,无论如何,让我们试一试。
首先,这是我正在使用的模型:
class Location(models.Model):
  name=models.CharField(max_length=255)
  beverages = models.ManyToManyField(Beverage, through='LocationStandard')
  location_number=models.CharField(max_length=255)
  organization=models.CharField(max_length=255)
class OrderGroup(models.Model):
  id = models.AutoField(primary_key=True)
  def __unicode__(self):
      return str(self.id)
class Order(models.Model):
  group=models.ForeignKey(OrderGroup)
  location=models.ForeignKey(Location) #elim this or m2m
  beverage=models.ForeignKey(Beverage)
  units_ordered=models.IntegerField(max_length=10, default=0)
  order_delivered=models.NullBooleanField(null=True)
  timestamp=models.DateTimeField(auto_now_add=True)
  user=models.ForeignKey(User)
这是我要在模板中呈现的内容:
{{ location.name }}
{{ location.latest_order }}
{{ location.unfilled_orders }}
因此,我需要列出每个位置、从该位置下的最后一个订单的时间,以及 order_delivered=False 的数量。
我可以像这样成功地获取位置最近的订单时间戳:
locations = Location.objects.annotate(latest_order=Min('order__timestamp')).order_by('latest_order')
但现在我想对该订单的 order_delivered=False 进行计数。我很困惑。
对我有什么帮助吗?