我正在尝试做一些对于 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 进行计数。我很困惑。
对我有什么帮助吗?