我们如何将上下文值传递给qweb报告,以便我可以控制表的可见性。我有一个包含很多表格的qweb报告。根据选择列表,我想在qweb报告中控制这些表的视图。所以我的选择是控制使用上下文。但没有找到任何方式来传递上下文。如果有任何其他意见,请分享。
答案 0 :(得分:1)
首先创建解析器类
import time
from openerp.osv import osv
from openerp.report import report_sxw
class sale_quotation_report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(sale_quotation_report, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
‘key’: value,
‘function_name’: self.function_name,
})
def function_name(self):
### add some code if required..
然后定义另一个类
class report_saleorderqweb(osv.AbstractModel):
_name = ‘module_name.report_sale_order_qweb’
_inherit = ‘report.abstract_report’
_template = ‘module_name.report_sale_order_qweb’
_wrapped_report_class = sale_quotation_report
然后你可以用这种方式调用localcontext方法
<span t-esc=”function_name(parameter)”/>
请参阅Qweb report
上的博客答案 1 :(得分:0)
你的问题不清楚你究竟想要什么。例如,我不知道你的意思是“根据选择列表”,所以我假设你有一个向导,提示用户选择一些选项。如果是这种情况,您可以在打印函数的return语句中传递数据字典中的选择变量。
def print_report(self, cr, uid, ids, context=None):
if context is None:
context = {}
datas = {'ids': context.get('active_ids', [])}
res = self.read(cr, uid, ids, ['date_start', 'date_end', 'user_ids'], context=context)
res = res and res[0] or {}
datas['form'] = res
if res.get('id',False):
datas['ids']=[res['id']]
return self.pool['report'].get_action(cr, uid, [], 'point_of_sale.report_detailsofsales', data=datas, context=context)
这传递了数据['form']下的用户选择。然后,您可以访问qweb中的选项作为数据['form'] ['date_start']