Python 计数中的计数,用Django ORM表示

Python 计数中的计数,用Django ORM表示,python,django,django-models,Python,Django,Django Models,你好,我是以下结构 class Vegetable(models.Model): vegetable_name = models.Chafield(max_legnth = 100) class Buyer(models.Model): buyer_name = models.Chafield(max_legnth = 100) Class Holding(models.Model): vegetable = models.ForeignKey(Vegetable)

你好,我是以下结构

class Vegetable(models.Model):
    vegetable_name = models.Chafield(max_legnth = 100)

class Buyer(models.Model):
    buyer_name = models.Chafield(max_legnth = 100)

Class Holding(models.Model):
    vegetable = models.ForeignKey(Vegetable)
    buyer = models.ForeignKey(Buyer)
我想得到买主持有某一种蔬菜的数量,以及持有该种蔬菜的单位总数。当然,我可以使用过滤器和注释,但它们会给我一本字典。例如,我可以使用

Holding.objects.filter(vegetable__pk='223').values('buyer').annotate(tcount=Count('buyer'))
(只是一个例子)

以下是我的答案:

[{'buyer': '111', 'tcount': 3}, {'buyer': u'112', 'tcount': 4}, {'buyer': u'113', 'tcount': 3}]
现在蔬菜的总持有量是3+4+3=10


我将不得不进行额外的计算,迭代字典,检索count的值并添加它们。另外,我不想进行额外的查询,只想得到pk='223'的蔬菜。我可以通过一次ORM查询获得所有这些信息,并且不执行任何迭代计算。

要获得所有买家的特定蔬菜总数,您可以:

Vegetable.objects.filter(vegetable_name="Carrot").count()

我不明白你所说的
买方持有特定蔬菜的数量和
持有特定蔬菜的总单位数是什么意思。你能提供一些示例数据和预期结果吗?例如,如果我使用“西红柿”进行过滤,我会得到以下结果:这不是一个示例。数据+结果意味着:向我们显示您的初始数据,然后显示您的预期结果发布不完整的原因:例如,让我们以“西红柿”为例。如果使用“西红柿”进行筛选,我将使用上面的查询得到以下结果:[{'buyer':'111','tcount':3},{'buyer':u'112','tcount:4},{'buyer':u'113','tcount 3}](同样只是一个例子)嘿,我为这个不完整的问题道歉。我已经完成了。但这意味着我要做两个ORM查询。一个用于获取持股数量,另一个用于总数量。我想在一个ORM查询中完成它,如果可能的话,我不知道如何在一个ORM查询中完成。我会用两个ORM查询,如果这会使服务变慢,我会添加缓存。还有是否有任何插件或应用程序可以实现这一点?