10

我有很多对象,其中 3 个具有 name='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 划分通过 Django 的 ORM 与 SQL 划分不同,因此 python 3 中的 2/1 返回 2.0 - OK,但在 SQL 中没有

4

1 回答 1

18

@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()))
于 2016-12-18T12:20:23.883 回答