저는 Python 3.2.3, Django 1.5 및 PostgreSQL을 사용하고 있습니다.Django .extra() 예상대로 작동하지 않습니다
나는 .extra()
을 사용하는 것에 대해 이해하고 있으면 안되지만, 나는 실종 된 것이 절대적으로 우 'm 다. 이것은 내가 읽은 것에서부터 효과가있는 것처럼 보입니다.
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)"})
그것은 잘 작동 :
vscore = models.PositiveSmallIntegerField(blank=True,null=True,
verbose_name="Visitors Score")
hscore = models.PositiveSmallIntegerField(blank=True,null=True,
verbose_name="Home Score")
그리고 그것에서 일부 데이터를 얻기 위해이 코드 조각을 사용하고 있습니다 :
의 내가이 분야를 포함하는 모델을 가지고 있다고 가정 해 봅시다 단, extra()
은 vscore가 hscore보다 큰 행 수를 얻으려고 시도하는 데 사용됩니다. 나는 심지어 결과를 얻는 사전에 vwins
키를 얻지 못한다. 그래서 나는 어떻게 든이 권리를 사용하지 않는다고 생각하고있다. 그게 내가 완전히 의아해하는 곳이다. 왜냐하면 나는 이것을 복사하여 the documentation에서 곧바로 붙여 넣고 나의 요구에 맞게 SQL 비트를 변경했기 때문이다. vstats
사전에 vwins
키가 포함되어있는 이유는 무엇입니까?
고마워요! 나는 그것이 작동하고 있다고 생각한다. 그러나 Django는 DB 오류가 있다고 말한다. PostgreSQL 9.0 문서에 http : // www.라고 쓰여져 있기 때문에 "function sum (boolean)은 존재하지 않는다."라는 말이있다. postgresql.org/docs/9.0/static/functions-aggregate.html – Zamphatta