2017-02-01 51 views
0

我有一个模型“毒品”,它有一个包含数量的子外键“会计分录”。每种药物都有多个会计分录,我已将子分片的数量总和作为总和。Django从字典响应提取值

我现在的问题是,当我渲染模板我看到以下内容:在手

数量{ 'Quantity__sum':11}
{ 'Quantity__sum':99}
{“Quantity__sum”:222}

我试图让“Quantity__sum”:11显示为基本价值(11),但似乎无法得到它的正常工作

非常感谢您的帮助

models.py

class Drug(models.Model): 
Facility = models.ForeignKey(Facility, on_delete=models.CASCADE) 
Name = models.TextField(max_length=120,default='default') 

def _get_sum_quantity(self): 
    return self.quantities.aggregate(Sum('Quantity')) 

sumQuantity = property(_get_sum_quantity) 

def __str__(self): 
    drug_name = self.Name 
    return drug_name 

class Meta: 
    verbose_name_plural = 'Drugs' 


class AccountingEntry(models.Model): 
    Drug = models.ForeignKey(Drug, on_delete=models.CASCADE, related_name='quantities') 
    Quantity = models.IntegerField(default='0') 


views.py

def update(request): 
    context = locals() 
    template = 'update.html' 
    return render(request, 'update.html', {'drug_list': Drug.objects.all()}) 


HTML摘录

{% for drug in drug_list %} 
    <td>{{ drug.Name }}</td> 
    <td>{{ drug.sumQuantity }}</td> 
    {% if not forloop.last %} 
     </tr> 
     <tr> 
    {% endif %} 
{% endfor %} 

回答

0

我觉得这些线

{'Quantity__sum': 11} 
{'Quantity__sum': 99} 
{'Quantity__sum': 222} 

来自drug.sumQuantity(位于HTML代码段内。所以,如果你想得到Quantity__sum的值,你可以在SumQuantity属性上做一个点符号。所以,你可能有类似这样的东西

{% for drug in drug_list %} 
    <td>{{ drug.Name }}</td> 
    <td>{{ drug.sumQuantity.Quantity__sum }}</td> 
    {% if not forloop.last %} 
     </tr> 
     <tr> 
    {% endif %} 
{% endfor %} 
+0

这就是它的确切,谢谢它立刻解决了底层的价值。非常感谢您的回答! –

+0

如果这个答案是正确的,请标记为正确 – e4c5