Django 获取related_name字段的'children'计数(并在模板中执行此操作?



我正在尝试获取总部(总部(现场经理的名单以及现场经理手下的动物和代理人的数量。每个外键都有一个相关的名称。

型号为

class Fm(models.Model):
hq    = models.ForeignKey(Hq, on_delete=models.SET_NULL,null=True)
fm    = models.CharField(max_length=50)
class User(AbstractBaseUser):
email  = models.EmailField(max_length=255,)
fm     = models.ForeignKey(Fm,on_delete=models.SET_NULL,related_name="agents")
class Animal(models.Model):
agent  = models.ForeignKey(User,on_delete=models.SET_NULL,related_name="animals")
farmer = models.CharField(max_length=50')

查看

def print_table(request):
fms = Fm.objects.all()
context = {'fms':fms}
return render(request, 'fm.html',context)

模板

{% for fm in fms %}
<tr>

<td>{{fm.hq}}</td>
<td>{{fm.fm}}</td>
<td>{{fm.agents.animals.all.count}}</td> (Error here)
<td>{{fm.agents.all.count}}</td>
</tr>
{% endfor %}
Expected OutPut
HQ   FM_Name  Animal_Count       Agent_Count
HQ1  Any Name 10 (Not Working)      2

电流输出

HQ   FM_Name  Animal_Count       Agent_Count
HQ1  Any Name                       2

这是动物的列表计数,但我需要所有的总和

{% for x in fm.agents.all %}
<div>{{x.animals.all.count}}</div><br>
{% endfor %}

任何人请帮助我

您可以像这样将数据从视图传递到模板

all_result = []
fms = Fm.objects.all()
for x in fms:
result = {}
result['fm']=x.fm
result['hq']=x.hq
result['zone']=x.hq.zone
result['age_count']= User.objects.filter(fm=x).count()
agents=  User.objects.filter(fm=x)
result['animal_count']=Animal.objects.filter(agent__in=agents).count() 
all_result.append(result)

它对我有效,如果你还有问题,请告诉我

最新更新