2016-11-03 10 views
0

私はDjangoのdocumentation on aggregateを読んでいます。Django ORMの方法で複数の結合ステートメントを集約で書き直すには?

しかし、集約フィールドと他の関連フィールドの両方を取得する方法の例は提供していません。

もちろん、テーブルが結合されている例はありません。

私はDjango ORMになりたいという動作確認クエリを持っています。

SELECT SUM(pc.count), p.name, p.art_number from 
packagecontent pc inner join 
product p 
    on pc.product_id = p.id inner join 
package pack 
    on pc.package_id = pack.id 
where pack.pallet_id is not null group by p.id; 

Django ORMを使用してこれを書き直すにはどうすればよいですか?ちなみに、.raw機能を使用することではありません。

答えて

0

特定の例では、aggregateは必要ありませんが、オブジェクトあたりの値はannotateになります。

あなたModel名に応じて、このようなものは、あなたが必要なものを行う必要がありますが:

q = (PackageContent.objects 
     .filter(package__pallet__isnull=False) 
     .values('product__name', 'package__art_number') 
     .annotate(models.Sum('count')) 
    ) 
+0

注釈が何を意味するのでしょうか? –

関連する問題