简体   繁体   English

django 获取相关名称字段的“孩子”计数(并在模板中执行此操作?)

[英]django get count of 'children' of related_name field (and do this in template?)

I am trying get the list of HQ (Head Quarter) Field Manager and count of Animal and Agent under Field Manger.我正在尝试获取总部(总部)现场经理的名单以及现场经理下的动物和代理人的数量。 Each foreign key has a related name.每个外键都有一个相关的名称。

Models are型号是

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')

View看法

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

Template模板

{% 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

Current Output当前Output

 HQ   FM_Name  Animal_Count       Agent_Count
 HQ1  Any Name                       2

This is listing count of Animal but I need sum of all这是 Animal 的列表计数,但我需要所有的总和

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

Anyone Please Help Me任何人请帮助我

You can pass your data like this from views to template您可以将这样的数据从视图传递到模板

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)

It worked for me let me know if you still have problems它对我有用,如果您还有问题,请告诉我

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM