Django 的注释 Count with 除法返回整数而不是浮点数



我有很多对象,其中3个具有名称='aaa'

我按'name'将它们分组,并在组中注释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部门通过Django的ORM不同,因此,Python 3中的2/1返回2.0-好的,但在SQL

中不返回

@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()))

最新更新