cast
는 컬럼의 타입을 변경시켜준다.
from django.db.models.function import Cast
Record.objects.all().annotate(count=Cast( F('count'),FloatField() ))
용도: 계산을 위해 쓴다.
F()
는 모델의 필드, 혹은 어노테이트 된 값을 말한다.
Record.objects.all().annotate(count1=Count('*')).annotate(F('count1'))
이처럼 앞에서 annotate로 선언한 가상의 컬럼을 가져오기 위해 사용한다.
F()
를 계산해줌
testqs = Record.objects.all().values('character')
.annotate(win= Count(Case(When(gamerank=1, then=1))), allgames= Count('*'))
.annotate(winrate=ExpressionWrapper(Cast(F('win') * 100, FloatField() ) / Cast(F('allgames'),FloatField()) , output_field=DecimalField(decimal_places=2)))