Odoo 8 - "store=True" 的计算字段无法存储在数据库中
Odoo 8 - Compute Field with "store=True" can't store in database
我正在使用 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
它现在似乎可以工作,但事实并非如此。在视图中,我可以看到department_id
的值。但是在数据库中,table没有列department_id
,也没有这个列的值。
我的问题是:如何将 department_id
存储在数据库中?
备注:
- 在
department_id
的声明中,我设置了 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"
)
store=True
有效。
可能是您在数据库上创建字段后将计算添加到该字段。在这种情况下,不会触发初始计算。
解决方法是从 table 中删除该列,然后升级您的模块。重新创建字段时,应计算初始值。
我正在使用 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
它现在似乎可以工作,但事实并非如此。在视图中,我可以看到department_id
的值。但是在数据库中,table没有列department_id
,也没有这个列的值。
我的问题是:如何将 department_id
存储在数据库中?
备注:
- 在
department_id
的声明中,我设置了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" )
store=True
有效。
可能是您在数据库上创建字段后将计算添加到该字段。在这种情况下,不会触发初始计算。
解决方法是从 table 中删除该列,然后升级您的模块。重新创建字段时,应计算初始值。