如何计算Django模板中两个上下文变量之间的差异
How to calculate the difference between two context variables in Django template
考虑一个模型:
class TempReport(models.Model):
id = models.AutoField(primary_key=True)
cost = models.FloatField()
revenue = models.FloatField()
# Some other fields not relevant to topic
class Meta:
managed = False
db_table = 'temp_report'
unique_together = (('sale_point', 'date'), ('id', 'sale_point'),)
@property
def net_income(self):
return self.revenue - self.cost
我的目标是计算净收入=收入-成本
模板代码:
<tbody>
{% for repdata in reporttable %}
<tr>
<td> {{ repdata.revenue }}</td>
<td> {{ repdata.cost }}</td>
<td> {{ repdata.net_income}}</td>
</tr>
{% endfor %}
</tbody>
...和视图
def tempreport(request):
reporttable = TempReport.objects.values('id','cost','revenue')
return render_to_response('report.html',
{'reporttable': reporttable},
context_instance = RequestContext(request))
我最终得到一个空的 net_income 即使没有错误消息存在。知道为什么这可能是由以下原因引起的吗?
在模型上创建 属性 应该可行。您的代码缩进不正确。 属性 应该是模型 class 的方法,而不是 Meta class.
class TempReport(models.Model):
id = models.AutoField(primary_key=True)
cost = models.FloatField()
revenue = models.FloatField()
# Some other fields not relevant to topic
class Meta:
managed = False
db_table = 'temp_report'
unique_together = (('sale_point', 'date'), ('id', 'sale_point'),)
@property
def net_income(self):
return self.revenue - self.cost
在您看来,不要使用 values()
,因为那样会 return 字典而不是模型实例,并且您将无法访问 属性。
from django.shortcuts import render
def tempreport(request):
reporttable = TempReport.objects.all()
for r in reporttable:
r.net_income = r.revenue - r.cost
return render(request, 'report.html', {'reporttable': reporttable})
请注意,我还更新了视图以使用 render
而不是过时的 render_to_response
。
考虑一个模型:
class TempReport(models.Model):
id = models.AutoField(primary_key=True)
cost = models.FloatField()
revenue = models.FloatField()
# Some other fields not relevant to topic
class Meta:
managed = False
db_table = 'temp_report'
unique_together = (('sale_point', 'date'), ('id', 'sale_point'),)
@property
def net_income(self):
return self.revenue - self.cost
我的目标是计算净收入=收入-成本 模板代码:
<tbody>
{% for repdata in reporttable %}
<tr>
<td> {{ repdata.revenue }}</td>
<td> {{ repdata.cost }}</td>
<td> {{ repdata.net_income}}</td>
</tr>
{% endfor %}
</tbody>
...和视图
def tempreport(request):
reporttable = TempReport.objects.values('id','cost','revenue')
return render_to_response('report.html',
{'reporttable': reporttable},
context_instance = RequestContext(request))
我最终得到一个空的 net_income 即使没有错误消息存在。知道为什么这可能是由以下原因引起的吗?
在模型上创建 属性 应该可行。您的代码缩进不正确。 属性 应该是模型 class 的方法,而不是 Meta class.
class TempReport(models.Model):
id = models.AutoField(primary_key=True)
cost = models.FloatField()
revenue = models.FloatField()
# Some other fields not relevant to topic
class Meta:
managed = False
db_table = 'temp_report'
unique_together = (('sale_point', 'date'), ('id', 'sale_point'),)
@property
def net_income(self):
return self.revenue - self.cost
在您看来,不要使用 values()
,因为那样会 return 字典而不是模型实例,并且您将无法访问 属性。
from django.shortcuts import render
def tempreport(request):
reporttable = TempReport.objects.all()
for r in reporttable:
r.net_income = r.revenue - r.cost
return render(request, 'report.html', {'reporttable': reporttable})
请注意,我还更新了视图以使用 render
而不是过时的 render_to_response
。