0

こんにちは私は次の構造です

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' で野菜を保持するためだけに、追加のクエリを作成したくありません。このすべての情報を 1 つの ORM クエリだけで取得し、反復計算を実行しないことはできますか?

4

1 に答える 1

1

すべての購入者から特定の野菜の総数を取得するには、次のことができます。

Vegetable.objects.filter(vegetable_name="Carrot").count()
于 2013-06-27T10:33:45.157 に答える