我在用着Odoo 8
我有一个问题compute field
类型是Many2One
.
在此,我宣布department_id
:
department_id = fields.Text(
string="Department", store=True,
comodel_name="hr.department",
compute="_get_department_id"
)
该计算域的功能:
@api.depends('employee_id')
def _get_department_id(self):
if self.employee_id.department_id:
self.department_id = self.employee_id.department_id.name
现在似乎有效,但事实并非如此。在view中,我可以看到的价值department_id
。但在数据库中,表没有列department_id
并且该列没有任何值。
我的问题是:我如何存储department_id
在数据库中?
Notes:
- 在声明中
department_id
, I set store=True
,但它没有将该字段的值存储在数据库中。
-
我做了一个测试。我加compute_field
与类型Text
,它有效,我不知道为什么计算字段不适用于类型Many2One
.
@api.depends('employee_id')
def _get_compute_field(self):
if self.employee_id.department_id:
self.compute_field = self.employee_id.department_id.name
compute_field = fields.Text(
string="Compute Field", store=True,
compute="_get_compute_field"
)
The store=True
作品。
您可能是在数据库中创建字段后才将计算添加到该字段中的。在这种情况下,不会触发初始计算。
解决方法是从表中删除该列,然后升级您的模块。重新创建字段时,应计算初始值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)