Odoo 8 - 具有"store = True"的计算字段无法存储在数据库中

Tua*_*ran 1 field store openerp-8 odoo

我正在使用Odoo 8,我的compute field类型有问题Many2One.

在这里,我宣布department_id:

department_id = fields.Text(
    string="Department", store=True,
    comodel_name="hr.department",
    compute="_get_department_id"
)
Run Code Online (Sandbox Code Playgroud)

和这个计算领域的功能:

@api.depends('employee_id')
def _get_department_id(self):
    if self.employee_id.department_id:
        self.department_id = self.employee_id.department_id.name
Run Code Online (Sandbox Code Playgroud)

它现在似乎工作,但事实并非如此.在视图中,我可以看到它的价值department_id.但是在数据库中,表没有列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"
    )
    
    Run Code Online (Sandbox Code Playgroud)

Dan*_*eis 6

store=True作品.可能是您在数据库上创建计算后将其添加到字段中.在这种情况下,不会触发初始计算.

解决方法是从表中删除列,然后升级模块.重新创建字段时,应计算初始值.