1
我是Django Annotations的新手,我試圖在給定位置生成訂單收入摘要報告。Django Annoation:從Annoation值獲取對象而不是ID
例如,該報告將是這個樣子:
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'>
但是,上面的行返回一個int而不是一個Location對象。我希望能夠以某種方式引用位置名稱和位置類型,如location.name或location.type。有沒有辦法在註解中返回一個位置對象,而不是隻有位置ID(需要單獨的潛在昂貴的查找)?
任何意見是非常感謝。
謝謝, 喬
很漂亮,謝謝! – 2011-03-10 18:09:52
一個相關的問題。有沒有一種方法可以將過濾器放在作爲註釋一部分進行彙總的訂單上?我知道我的例子不是那麼詳細,但是想知道是否有方法在訂單日期過濾。 – 2011-03-10 18:20:34
是的,你可以把過濾器,我已經更新了我的答案。 – Ski 2011-03-10 18:32:40