Django 模型有自我的外键。我想统计 children?

Django model has foreignkey to self. I want to get count of children?

我有一个模型如下,它是分层组 该组有一个 parent 组或 none

class AccGroup(models.Model):
    grpid = models.BigAutoField(primary_key=True, editable=False)
    groupname = models.CharField(max_length=40, default="", verbose_name='Group Name')
    parentgrpid = models.ForeignKey('self',on_delete= models.SET_NULL,  blank=True, null=True, verbose_name='Parent Group')
    printlevel = models.IntegerField(default=0, verbose_name='Print Level')
    def __str__(self):
        return "%s" % (self.groupname)

此群组列表显示在 HTML Table 中,使用模板发送查询列表作为上下文

 
<table>
    <thead>
        <th>Group Name</th><th>Parent Group</th><th>Print Level</th><th>Children</th>
    </thead>
    <tbody>
     {% for group in grouplist %}                        
        <tr>
            <td><a  href="{% url 'groupupdate' menu.grpid %}" >                       
            {{group.groupname}}</a>
            </td>
            <td>{{group.parentgrpid}}</td> <td>{{group.printlevel}}</td> <td>{{group.accgroup__count}}</td>
        </tr>
        {% endfor %}                      
    </tbody>
</table>

如果有child组那么我想知道我可以在html table中打印的组下有多少child组 如何从 parent 组 object

中获取 children 组数

您可以直接 children 计算为:

<i>myaccgroup</i>.<b>accgroup_set.count()</b>

因此 不会 考虑大 children 等。只有项目 tat 是 one 层下面myaccgroup object.

如果您需要大量 AccGroups,那么您可以 .annotate(…) [Django-doc] AccGroups 的查询集:

from django.db.models import Count

AccGroup.objects.<b>annotate(</b>
    nchildren=Count('accgroup')
<b>)</b>

this查询集产生的AccGroupobjects将有一个额外的属性.nchildren,因此对于每个AccGroup会携带directchildren.

的号码