添加了一个布尔字段is_customer = fields.Boolean('Is customer', readonly=True)
在视图中添加了一个字段
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
(和分组依据相同)但“未定义”仍然存在。
如果在Odoo报告中我可以Undefined
表示False
,那么当“未定义”显示为“错误”时
注意:在使用Firefox进行调试时,我可以从服务器上看到(jsonrpc)数据在报告项目中带有“is_customer:false”或“is_customer:true”。但不知何故,报表视图中具有“is_customer:false”的项目显示为,就好像“is_customer:Undefined”。
更新
我偶然发现了line
if (value === false) return _t("Undefined");
这个逻辑背后的原因可能是:'如果值为false则返回“未定义”'?
有趣的是,我可以添加if (value === true) return _t("Whatever");
:)
答案 0 :(得分:1)
这并不理想,但您可以在res.partner
上创建一种计算的复制/虚拟字段,用于存储Char
字段的Boolean
版本。
以此为例,其中compute方法只检查字段是否为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
。