私は Django Annotations を初めて使用し、特定の場所での注文収入の概要レポートを生成しようとしています。
たとえば、レポートは次のようになります。
Location Name | Location Type | Sum of Order Subtotal
そして、これらは私が使用するモデルの例です:
class Order(models.Model):
order_subtotal = models.DecimalField(...)
location = models.ForignKey('Location')
....
class Location(models.Model):
name = models.CharField(...)
type = models.IntegerField(...)
....
注釈を付けるためにいくつかのクエリを実行できます...
from django.db import models
In [1]: order_locations =\
Order.objects.values('location').annotate(models.Sum('order_subtotal'))
In [2]: order_locations[0]
Out[2]: {'location': 1, 'order_subtotal__sum': Decimal('1768.08')}
In [3]: location = order_locations[0]['location']
In [4]: location
Out[4]: 1
In [5]: type(location)
Out[5]: <type 'int'>
ただし、上記の行は Location オブジェクトではなく int を返します。location.name や location.type のように、場所の名前と場所の種類を何らかの方法で参照できるようにしたいと考えています。ロケーションIDだけでなく、アノテーションでロケーションオブジェクトを返す方法はありますか(コストがかかる可能性のある個別のルックアップが必要です)?
どんなアドバイスでも大歓迎です。
ありがとう、ジョー