2017-06-20 14 views
1

で3番目のテーブルから行を頼りに使用して:は、私は、このモデルを持っているジャンゴ

class MemberGroup(models.Model): 
    name=models.CharField(max_length=15) 

class Subgroup(models.Model): 
    name=models.CharField(max_length=15) 
    member_group=models.ForeignKey(MemberGroup,related_name='membergroup_subgroup') 

class Members(models.Model): 
    user=models.ForeignKey(User) 
    subgroup=models.ForeignKey(Subgroup) 

を今私は、グループ内のメンバーの数をカウントしたいが、各メンバーは、サブグループの一部です。

my_groups=MemberGroup.objects.all().values('id','name').annotate(c=Count('membergroup_subgroup')) 

は、各グループのサブグループの数を私に与えます。しかし、私は代わりにメンバーが欲しいし、今までの試みは失敗しました。

+1

サブグループとメンバーモデルとの関係はありません。どのようにあなたはグループに所属するメンバーを数えることができます – Exprator

+0

ああ、ごめんなさい。私はそれを持っている。私は間違ってここでは省略した。 –

+0

これを一度試してください。my_groups = MemberGroup.objects.all()。values( 'id'、 'name')注釈(c = Count( 'membergroup_subgroup__members')) – Exprator

答えて

0

あなたがmodels.pyであなたのMemberGroupManyToMany Fieldを追加する場合:

class MemberGroup(models.Model): 
    name=models.CharField(max_length=15) 
    members=models.ManyToManyField(Members) 

、あなたは、このようにカウントを取得することができます

MemberGroup.objects.all().annotate(c=Count('membergroup_members')) 

または個々のグループのために:

g = MemberGroup.objects.filter(...) 
g[0].members.count() 
関連する問題