我有这个错误预期的单例:salesman.period.kpi.line
这是我的py文件
class KpiLine(models.Model):
_name='salesman.period.kpi.line'
kpi_by_hr = fields.Float('KPI By Header')
check_field_line = fields.Boolean('Check', compute='get_user_line')
def get_user_line(self):
for line in self:
if self.env.user == line.kpi_id.user_id:
self.check_field_line = False
else:
self.check_field_line = True
这是我的xml
<field name="kpi_by_hr" attrs="{'readonly': [('check_field_line', '!=', True)]}" />
我的目标是使kpi_by_hr仅在创建者打开文档时只读,而不适用于其他
您已经在self
上循环以将line
作为Singleton。因此,将您的值分配给line
而不是self
# wrong
self.check_field_line = False
# right
line.check_field_line = False
在计算方法调用中,self
可以并且大部分将是多记录集,并且在Odoo 15之前,没有办法将值分配给多记录集的字段,而不使用update()
或write()
。但这两种方法都不应该用在计算方法中。
编辑:尽量遵循Odoo的命名准则,并以其计算字段(如果不计算多个字段(命名计算方法:_compute_check_field_line
。