【问题标题】:how to get selected companies in a pdf report如何在 pdf 报告中获得选定的公司
【发布时间】:2021-09-22 15:16:57
【问题描述】:

如标题中所述,我想在报告中获取选定的公司(在多公司数据库中),我知道这可以在 python 中使用:

select_companies = self.env['res.company'].browse(self._context.get('allowed_company_ids'))

但是在 qweb 中我没有 self(记录),还有其他方法可以获取上下文吗?

注意:我将在t-if中使用它们
Odoo v14

【问题讨论】:

  • 请尝试:qweb 中的 request.env['res.company'].browse(request._context.get('allowed_company_ids'))。
  • 你能解释一下request是什么吗?
  • 您可以在qweb中使用请求浏览对象。
  • 您对模板的提示很有帮助。您扩展的不是 PDF 报告,而是 BI(商业智能)报告模板。

标签: odoo qweb odoo-14


【解决方案1】:

在文档报告 (QWeb) 中,您通常会得到doc 或o,它们代表您要打印/呈现的记录。这通常是(除了在极少数情况下)一个普通的 Odoo 记录集,其中包含您可以在 Odoo 的 python 业务逻辑代码中使用的所有内容。所以试试吧:

<span t-esc="o.env.context.get('allowed_company_ids', 'sorry nothing here')" />

这应该打印/呈现公司 ID 列表。如果这有效,您还可以在 t-ifs 和其他 QWeb 控件元素中使用它。

在 商业智能 报告中(又是 QWeb),这取决于报告的调用方式。在评论中提到了模板account_reports.line_template,它已经使用了context.get()。但这并不意味着这个上下文是正常的上下文。但值得一试。您必须深入研究报告 python 代码,以找出上下文中存在的内容或如何操作它。

【讨论】:

  • 谢谢你的回答,我已经试过了,但经过验证我发现我没有doc也没有o,我继承了account_reports.line_template
  • 在account_reports.line_template我看到有&lt;t t-if="not context.get('print_mode')"&gt;,这是否意味着我可以使用context.get('allowed_company_ids', 'sorry nothing here')?
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
相关资源
最近更新 更多