turbogears2 从查询行中乘以价格和成本
turbogears2 multiply price and cost from rows of query
我知道这个问题已经被问过了,但我无法真正理解答案背后的想法,因为我是编程的初学者,几乎所有内容对我来说都是新的。
我正在尝试将每种成分的价格乘以其数量以获得其成本,然后将所有成分的成本相加以获得食谱的 final_cost 并在我的 [=19] 上查看=] 模板。
我有一个查询 returns 来自数据库的键和值的字典,现在我坚持计算并查看 html
上的 final_cost
@expose('recipe4.templates.newnew')
def getTotalCost(self):
i = Ingredient
ic = Ingredient_Cost
ri = Recipe_Info
r = Recipe
val = DBSession.query(i.ingredient_name, ic.Unit_of_Measure, ri.quantity, ic.price_K, ic.updated_at).filter \
(r.recipe_name == "pancake",
r.recipe_id == ri.recipe_id,
ri.ingredient_id == i.ingredient_id,
i.ingredient_id == ic.ingredient_id)
dict(entries=val)
final_cost=0
for k,v in entries:
price=entries.price_K
qty=entries.quantity
cost=price*qty
final_cost+=cost
return final_cost
我没有一步一步检查代码,但大体思路似乎是正确的。
我看到的主要问题是您正在公开模板 recipe4.templates.newnew
但您没有 return 字典。
无论何时公开模板,控制器操作必须 return 字典。字典的所有键都将作为变量在模板中可用。
因此,如果您希望在您的模板中具有 final_cost
可访问性,您应该 return dict(final_cost=final_cost)
。
见https://turbogears.readthedocs.io/en/latest/turbogears/templating.html#template-variables
在@amol 的帮助和进一步的研究下,我终于解决了自己的问题,它对我有用。
sub_cost=[ ]
final_cost=[ ]
for k in val: #iterate through each row of tuples in the returned db object
for v in k: #iterate through each values of individual tuples
price=k[3] #position of price in tuple
qty=k[4]
cost=price*qty
sub_cost.append(cost)
break #breaks the loop
final_cost.append(sum(sub_cost))
return dict(final_cost=final_cost)
我知道这个问题已经被问过了,但我无法真正理解答案背后的想法,因为我是编程的初学者,几乎所有内容对我来说都是新的。
我正在尝试将每种成分的价格乘以其数量以获得其成本,然后将所有成分的成本相加以获得食谱的 final_cost 并在我的 [=19] 上查看=] 模板。
我有一个查询 returns 来自数据库的键和值的字典,现在我坚持计算并查看 html
上的 final_cost@expose('recipe4.templates.newnew')
def getTotalCost(self):
i = Ingredient
ic = Ingredient_Cost
ri = Recipe_Info
r = Recipe
val = DBSession.query(i.ingredient_name, ic.Unit_of_Measure, ri.quantity, ic.price_K, ic.updated_at).filter \
(r.recipe_name == "pancake",
r.recipe_id == ri.recipe_id,
ri.ingredient_id == i.ingredient_id,
i.ingredient_id == ic.ingredient_id)
dict(entries=val)
final_cost=0
for k,v in entries:
price=entries.price_K
qty=entries.quantity
cost=price*qty
final_cost+=cost
return final_cost
我没有一步一步检查代码,但大体思路似乎是正确的。
我看到的主要问题是您正在公开模板 recipe4.templates.newnew
但您没有 return 字典。
无论何时公开模板,控制器操作必须 return 字典。字典的所有键都将作为变量在模板中可用。
因此,如果您希望在您的模板中具有 final_cost
可访问性,您应该 return dict(final_cost=final_cost)
。
见https://turbogears.readthedocs.io/en/latest/turbogears/templating.html#template-variables
在@amol 的帮助和进一步的研究下,我终于解决了自己的问题,它对我有用。
sub_cost=[ ]
final_cost=[ ]
for k in val: #iterate through each row of tuples in the returned db object
for v in k: #iterate through each values of individual tuples
price=k[3] #position of price in tuple
qty=k[4]
cost=price*qty
sub_cost.append(cost)
break #breaks the loop
final_cost.append(sum(sub_cost))
return dict(final_cost=final_cost)