2

Django には次のような 2 つの単純なテーブルがあります。

class Session(models.Model):
    id = models.AutoField(primary_key=True)

class Track(models.Model):
    id = models.AutoField(primary_key=True)
    session = models.ForeignKey(Session)
    when = models.DateTimeField(null=False, auto_now_add=True)

すべてのセッションの平均期間を見つける必要があります。whenセッションの継続時間は、最高値と最低値を差し引いて計算されwhenます。私はこのようなことをすることができます:

Session.objects.all().annotate(duration=Max('track__when') - Min('track__when')).aggregate(Avg('duration'))

より良い方法はありますか?

ありがとう。

4

1 に答える 1

1

Querying data from Djangoで同じ質問にすでに答えたので、ORM API だけを使用しても次のことはできません。

  1. カスタム アノテーションを定義して API を拡張する、または
  2. あなたのview/templatetag/whateverで、Pythonでアルゴリズムの一部を行います
于 2011-08-16T11:03:36.607 に答える