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.
如果您需要大量 AccGroup
s,那么您可以 .annotate(…)
[Django-doc] AccGroup
s 的查询集:
from django.db.models import Count
AccGroup.objects.<b>annotate(</b>
nchildren=Count('accgroup')
<b>)</b>
由this查询集产生的AccGroup
objects将有一个额外的属性.nchildren
,因此对于每个AccGroup
会携带directchildren.
的号码
我有一个模型如下,它是分层组 该组有一个 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.
如果您需要大量 AccGroup
s,那么您可以 .annotate(…)
[Django-doc] AccGroup
s 的查询集:
from django.db.models import Count
AccGroup.objects.<b>annotate(</b>
nchildren=Count('accgroup')
<b>)</b>
由this查询集产生的AccGroup
objects将有一个额外的属性.nchildren
,因此对于每个AccGroup
会携带directchildren.