我希望尝试做一些可能对于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的数量进行计数。我感到相当困惑。你能帮帮我吗?
count=locations.filter(order__delivered=False).count()
? - Paulo Bulocations = count.objects.annotate(latest_order=Min('order__timestamp').order_by('latest_order'))
- jasongonzalescount
是什么?在我的注释中,它是一个int
。 - Paulo Bucount=locations.filter(order__delivered=False).annotate(undelivered=Count(order_delivered))
然后locations = count.objects.annotate(latest_order=Min('order__timestamp').order_by('latest_order'))
- jasongonzales