我正在使用 Python 3.2.3、Django 1.5 和 PostgreSQL。
我一定不了解有关使用的东西.extra()
,但我完全不知道我错过了什么。从我读过的内容来看,这似乎应该有效。
假设我有一个包含以下字段的模型:
vscore = models.PositiveSmallIntegerField(blank=True,null=True,
verbose_name="Visitors Score")
hscore = models.PositiveSmallIntegerField(blank=True,null=True,
verbose_name="Home Score")
我正在使用这段代码从中获取一些数据:
vstats = Game.objects.filter(start_et__range=[start,end],
).values(
'vteam').annotate(
vgames=Count('vteam'),
vscore=Sum('vscore'),
hscore=Sum('hscore'),
vscoreAVG=Avg('vscore'),
hscoreAVG=Avg('hscore')).extra(
select={'vwins': "sum(vscore>hscore)"})
它工作正常,除了extra()
,我用来尝试获取 vscore 大于 hscore 的行数。我什至没有vwins
在结果字典中得到一个键,所以我猜我在某种程度上没有使用这个权利。这就是我完全困惑的地方,因为我直接从文档中复制并粘贴了它并更改了 SQL 位以满足我的需要。为什么vstats
字典不包含vwins
键?