Odoo 中二进制字段的默认值
Default values for Binary fields in Odoo
简而言之,Odoo 中二进制字段的默认值是多少?
更具体地说,我正在尝试根据记录中是否包含某些文档来构建计算字段(即记录中已完成字段数量的一种状态栏)。
作为玩具示例,如果 bin1 和 bin2 是二进制字段并且 bool 是布尔值,那么我的进度将计算为
progress = 100.0 * (1*bool + 1*(bin1 is not None) + 1*(bin2 is not None)) / 3
幸运的是,保存记录后此计算工作正常。但是,在 Edit 模式下,进度显示为 2/3。
这带来了二进制字段的默认值问题或关于如何提取有关二进制字段是否已填充的信息的任何想法。
一个空的二进制字段是 False
一个包含 base64
编码字符串的值。
因此,在进行计算之前,您必须执行以下操作:
if item.bin_field:
bin_val = item.bin_field.decode('base64')
您的检查是否失败是因为您正在执行 "identity comparison",所以您基本上是在说“is
我的值与 None
相同?”而不是检查布尔值是否为假。
简而言之,Odoo 中二进制字段的默认值是多少?
更具体地说,我正在尝试根据记录中是否包含某些文档来构建计算字段(即记录中已完成字段数量的一种状态栏)。
作为玩具示例,如果 bin1 和 bin2 是二进制字段并且 bool 是布尔值,那么我的进度将计算为
progress = 100.0 * (1*bool + 1*(bin1 is not None) + 1*(bin2 is not None)) / 3
幸运的是,保存记录后此计算工作正常。但是,在 Edit 模式下,进度显示为 2/3。
这带来了二进制字段的默认值问题或关于如何提取有关二进制字段是否已填充的信息的任何想法。
一个空的二进制字段是 False
一个包含 base64
编码字符串的值。
因此,在进行计算之前,您必须执行以下操作:
if item.bin_field:
bin_val = item.bin_field.decode('base64')
您的检查是否失败是因为您正在执行 "identity comparison",所以您基本上是在说“is
我的值与 None
相同?”而不是检查布尔值是否为假。