簡體   English   中英

在Django ORM中進行計數

[英]Count within a count, in Django ORM

嗨,我是以下結構

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

我將不得不進行額外的計算,即遍歷字典並檢索計數值並將其相加。此外,我不想進行其他查詢,只是想獲得pk ='223'的蔬菜。 我能以某種方式僅通過一個ORM查詢獲得所有這些信息,並且不執行任何迭代計算。

要獲取所有買家中特定蔬菜的總數,您可以:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM