Django从字典响应中提取值

时间:2017-02-01 23:24:18

标签: python django

我有一个模特"药物"有子外键"会计分录"包含数量。每种药物有多个会计分录,我将子药数量的总和汇总为药物数量。

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

  

手头数量
  {'数量_sum':11}
  {'数量_sum':99}
  {'数量_sum':222}

我试图让数量_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 %}

1 个答案:

答案 0 :(得分: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 %}
相关问题