Граф 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()))
Другие вопросы по тегам