Граф Django Count с делением возвращает целое число вместо float
У меня есть много объектов, и у 3 из них есть имя ='AAA'
Я группирую их по имени и комментирую num в группе:
my_models = MyModel.objects.order_by('name').values('name').annotate(count=Count('name'))
for i in my_models:
print(i.count, i.name)
Я получил:
3, 'AAA'
1, 'BBB'
...
Все хорошо, но когда я пытаюсь добавить формулу для аннотации Count():
my_models = MyModel.objects.order_by('name').values('name').annotate(count=Count('name') / 2)
Я получил:
1, 'AAA'
0, 'BBB'
...
Но ожидается:
1.5, 'AAA'
0.5, 'BBB'
...
РЕДАКТИРОВАТЬ:
Деление Python отличается от деления SQL через ORM Джанго, поэтому 2/1 в питоне 3 возвращает 2.0 - хорошо, но не в SQL
1 ответ
Решение
Полный ответ после @ комментария Alasdair:
from django.db.models import FloatField
from django.db.models.functions import Cast
qs = MyModel.objects.order_by('name').values('name').annotate(
count=Cast(Count('name') / 2.0, FloatField()))