将数据从视图传递到模板时,我存在这种混淆。数据以0.12的形式存储在浮点数中,它显示为这样的" 12%",所以我们必须改变它,就像我们在下面所做的那样,但问题是,我们应该选择什么样的选择选择? 有两种选择,第一种是这样的:
item_list = Items.objects.all()
for item in item_list:
item.interest_rate *= 100
item.financing_amount /= 10000
...
return render_to_response("xxxx.html",{'ret': item_list})
第二个是这样的:
item_list = Items.objects.all()
ret = []
for item in item_list:
temp = {
"temp_interest_rate": item.interest_rate *= 100,
"temp_interest_rate": item.financing_amount /= 10000,
}
ret.append(item)
...
return render_to_response("xxxx.html",{'ret': ret})
第一个显然要简单得多,但我想也许它不是直接更改数据库模型的好方法,即使我们没有保存它。
我已经说服我的同学使用第二个安全,但我并没有说服自己。那么有经验的Django开发者可以提供一些建议吗?
答案 0 :(得分:1)
首先,"0.12"
是字符串,它不是浮点数。
在将对象传递给模板之前,在视图中装饰对象是完全可以的。动态向对象添加属性不会影响数据库。
此处的问题是您正在视图中修改显示详细信息。这不太理想。您应该让表示层(模板)决定某些内容的显示方式,以及您希望通过" raw"数据
解决此问题的最简单方法是创建自己的template filter,它会在表示层正确格式化数据。您会注意到large library of default filters都具有相同的用途 - 将数据转换为表示层的格式;这就是为什么推荐的方法是创建自己的过滤器。