0

在最好的情况下,需要统计一些属性值等于1、2、3和>3的行数。例子:

for i in xrange(1,4):
    count = some_queryset\
        .filter(related__value__exact=i)\
        .annotate(count=Count('mtopening'))\
        .values_list('count',flat=True)

有没有办法在没有 raw_sql 或简单的 .extra select 的情况下以面向对象的方式进行改进?

4

1 回答 1

0

使用 Django 的计数方法

count = some_queryset \
    .filter( Q(related__value__gte=1) & Q(related__value__lt=4) ).count()  # This should work also without using Q()

编辑

我认为在 django 中没有直接的方法可以做到这一点,但我认为下面的代码可以完成这项工作:

sums = []

for i in range(1,4):

    sums.append(
        QUERYSET.filter( related__value = i ).count() 
    )

print sums # will show you a list of sums of the values you want                
于 2013-10-23T01:33:35.203 回答