4

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

私のための助けはありますか?

4

1 に答える 1