我想在我的QWeb报告中使用元素“item”。我应该在报告中写些什么? “item”是tabData中的一个属性。你可以在下面看到我的python代码。 我已经配置了报告解析器并且它可以工作。
这是我的python代码:
def getLines (self, objects):
tabData = []
print objects
for i in range (7):
tabData.append({})
tabData [i] ['jour'] = self.tabJour [i]
tabData [i] ['commandes'] = {}
for o in objects:
indJour = int(o.jour) - 1
if indJour not in range(7): continue
commande = o.order_id.name
if not (tabData [indJour]['commandes'].has_key (commande)):
tabData [indJour]['commandes'][commande] = {}
tabData [indJour]['commandes'][commande]['items'] = []
tabData [indJour]['commandes'][commande]['partner'] = o.order_partner_id.name
bois = o.bois1.code_fini
bois2 = o.bois2.code_fini
metal = o.metal.code_fini
tissus = o.tissu.code_fini
poignee = o.poignee.code_fini
patte = o.patte.code_fini
cfg = o.config
optionTissu = o.tissu.couleur_finifr
qty = int(o.product_uom_qty)
qtyEmballe = 0
qtyPeinture = qty - qtyEmballe - int(o.FabPeint)
qtyTeinture = qty - qtyEmballe - int(o.FabTeint)
qtyRembourage = qty - qtyEmballe - int(o.ProdFTissus)
qtyMetal = qtyPeinture - int(o.ProdFMetal)
qtyBois = qtyTeinture - int(o.ProdFBois)
if not (qtyMetal) or qtyMetal < 0:
qtyMetal = 0
if not (qtyBois) or qtyBois < 0:
qtyBois = 0
if not (qtyPeinture) or qtyPeinture < 0:
qtyPeinture = 0
if not (qtyTeinture) or qtyTeinture < 0:
qtyTeinture = 0
if not (qtyRembourage) or qtyRembourage < 0:
qtyRembourage = 0
if bois == '.':
bois = None
if bois2 == '.':
bois2 = None
if metal == '.':
metal = None
if tissus == '.':
tissus = None
if poignee == '.':
poignee = None
if patte == '.':
patte = None
if cfg == '.':
cfg = None
if optionTissu == "NONE":
optionTissu=None
tabData [indJour]['commandes'][commande]['items'].append ({
'item': o.product_id.default_code,
'qty': qty,
'metal': metal,
'bois': bois,
'bois2': bois2,
'tissus': tissus,
'poignee': poignee,
'patte': patte,
'optionTissu': optionTissu,
'cfg': cfg,
'notes': o.notes,
'qtyEmballe': qtyEmballe,
'qtyMetal': qtyMetal,
'qtyBois': qtyBois,
'qtyPeinture': qtyPeinture,
'qtyTeinture': qtyTeinture,
'qtyRembourage': qtyRembourage,
})
print "FIN"
return tabData
感谢您的帮助。
答案 0 :(得分:2)
只需要使用以下方式迭代你的python词典列表:
你的 getLines()方法以字典列表的形式返回,然后你可以直接在Qweb模板上调用这个方法。
您只需将该方法直接调用 t-foreach属性
即可<t t-foreach="getLines(o)" t-as="line">
<tr>
<td><span t-esc="line.get('key1')"/>
</td>
<td>
<span t-esc="line.get('key2')"/>
</td>
</tr>
</t>
听到key1,key2,..等等根据您的字典键方法列表而来,该值会根据您在.py侧设置的值自动打印
我希望我的回答对您有所帮助:)。