我创建了一个model.py,如下所示
class overallAccountDetail(models.Model):
accountId = models.IntegerField(primary_key=True, unique=False, blank=False,
auto_created=True, null=False,
editable=False)
accountName = models.CharField(max_length=100)
countryName = models.CharField(max_length=100)
marketName = models.CharField(max_length=100)
Alarm_Count = models.CharField(max_length=255,default='',blank=True)
TT_Count = models.CharField ( max_length=255 , default='' , blank=True )
Views.py
def displayAlarmCount(request):
totalAlarmCount=overallAccountDetail.objects.filter(marketName='Market1', accountName= 'Account1').aggregate(Sum('Alarm_Count')).values()
ctx = {
'totalAlarmCount': totalAlarmCount
}
return render_to_response('overallaccountdetail_filter.html', ctx, context_instance=RequestContext(request))
在HTML模板中
{% block content %}
<form method="get">
{{ filter.form.as_p }}
<button type="submit">Search</button>
</form>
filter.qs.totalAlarmCount<br>
totalAlarmCount
<p><strong>Total Alarm_Count:</strong>{{totalAlarmCount}}</p>
<ul>
{% for overallAccountDetail in filter.qs %}
<li>{{ overallAccountDetail.Alarm_Count }}</li>
{% endfor %}
</ul>
现在的问题是当我在shell中执行以下查询时,我得到了与市场1相对应的Account1的所有警报计数的总和。但是当我在html上显示相同时...它什么也没显示。请告诉我的代码中的问题是什么。以下查询显示了我想在网页上显示的shell中的确切值
totalAlarmCount=overallAccountDetail.objects.filter(marketName='Market1',
accountName= 'Account1').aggregate(Sum('Alarm_Count')).values()
答案 0 :(得分:0)
Django促进关注点的分离意味着过滤数据应该在py文件(在你的情况下,上面写的相同方法)或模型类中执行。目前还不清楚模板中提取qs的过滤器对象是什么?如果您能提供详细信息,那么我将能够提供帮助。
答案 1 :(得分:0)
HI您的查询返回 dict的十进制值,如dict_values([十进制('308617')])
totalAlarmCount=overallAccountDetail.objects.filter(marketName='Market1',
accountName= 'Account1').aggregate(Sum('Alarm_Count')).values()
所以你可以改变你的下面,
sum_count=overallAccountDetail.objects.filter(marketName='Market1',
accountName= 'Account1').aggregate(Sum('Alarm_Count'))
totalAlarmCount = sum_count['Alarm_Count__sum']
return render(request, 'overallaccountdetail_filter', {'totalAlarmCount': totalAlarmCount})