计算与django中的条件匹配的记录

时间:2010-07-15 14:55:56

标签: django count

对于我的项目,我需要计算余额超过100美元的不同产品 该模型看起来像这样:

class Client(models.Model):
  ...

class Product(models.Model):
  ...

class ClientProduct(models.Model):
  client = models.ForeignKey(Client)
  product = models.ForeignKey(Product)

class Balance(models.Model):
  clientproduct = models.ForeignKey(ClientProduct)
  balance = models.DecimalField(max_digits=10, decimal_places=2)

但我很无能......而SO中的其他相关问题并没有真正解决这个问题...... 请帮忙。

2 个答案:

答案 0 :(得分:1)

听起来您希望对按ClientProduct.product分组的所有余额进行求和,并筛选余额大于100美元的产品。类似的东西:

from django.db.models import Sum
Product.objects.annotate(
              balance_sum=Sum('clientproduct__balance')
         ).filter(balance_sum__gte=100)

答案 1 :(得分:1)

似乎这样的事情应该有效:

balances_over_100 = Products.objects.filter(clientproduct__balance__gte=100)
balances_over_100.count()