私は、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 をカウントしたいと思います。私はかなり困惑しています。
私のための助けはありますか?