我修改了crm_opportunity_report :
添加了一个 bool 字段
is_customer = fields.Boolean('Is customer', readonly=True)
在 View 中添加了一个字段
CREATE VIEW crm_opportunity_report AS ( SELECT <...>omitted<...> rp.customer as is_customer FROM "crm_lead" c LEFT JOIN "res_partner" rp ON rp.id = c.partner_id <...>omitted<...> GROUP BY c.id, stage.name, is_customer
在报告中,当我单击“+”并选择“是客户”时,有时值 Undefined
会显示为它的值。
试过这个: COALESCE(rp.customer, FALSE) as is_customer
(在 Group by 中也是如此)但是“未定义”仍然存在。
我如何在 Odoo 报告中使 Undefined
表示 False
以便当它为“Undefined”时显示为“False”?
注意: 在使用 Firefox 进行调试时,我可以观察到来自服务器的 (jsonrpc) 数据在报告项上带有“is_customer: false”或“is_customer: true”。但不知何故,那些在报 TableView 中具有“is_customer: false”的项目显示好像“is_customer: Undefined”。
更新
我偶然发现了这个 line
if (value === false) return _t("Undefined");
此逻辑背后的原因可能是什么:“如果值为假,则返回“未定义””?
有趣的部分,我可以添加 if (value === true) return _t("Whatever");
:)
最佳答案
这并不理想,但您可以在 res.partner
上创建一种计算复制/虚拟字段存储 Char
Boolean
的版本 field 。
以此为例,计算方法只是检查字段是否为 True 并存储为 't'
或 'f'
取决于那个。
is_customer_string = fields.Char('Is a Customer? (text)', compute='_compute_is_customer_string', store=True)
@api.multi
@api.depends('is_customer')
def _compute_is_customer_string(self):
for partner in self:
partner.is_customer_string = 't' if partner.is_customer else 'f'
Documentation on computed fields
注:store=True
可能是可选的,但如果您存储该字段,则必须使用一些 depends
字段作为重新计算的触发器。如果你不store
计算字段,然后是 depends
应该离开。
关于python - Odoo 报告字段数据在预期时为 "Undefined"False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49974551/