2017-07-13 31 views
3

のカウントに注釈を付けます。Djangoは、私は三つの主要なモデルを持っている外部キーの外部キー

これを行うには、アノテーションを使ってDjangoの集計を使用することをお勧めしますが、どのように正確にこれを行うかはわかりません。代わりにextraを使用する必要があります。

私は Client.objects.annotate(branch_count=Count('property__branch'))のようなものが必要だと知っていますが、どういうわけか、各ブランチに接続されたプロパティのフィルタリングを追加する必要があります。

他の方法は、おそらく、私はいずれかのクライアントのために最高のカウントでブランチをルックアップするためにそれを使用します、カウントの辞書を構築するだろうCollections.Counter

d = {} 
for c in Client.objects.all(): 
    d[c] = Counter(c.property_set.values_list('branch', flat=True)) 

これを利用することです。プロパティモデルで

答えて

0

は(「client_ref」と言うことができます)クライアントには問題は解決しました名前は、いくつかの他のフィルタ特性

+0

に置き換えることができます

Client.objects.annotate(branch_count=Count( 'client_ref__branch')).filter(branch__name="some_name") .values('branch')

をrelated_name属性を与えますか? –

関連する問題