2015-03-03 68 views
1

我使用Odoo 8,我遇到了問題compute field,類型爲Many2OneOdoo 8 - 具有「store = True」的計算字段不能存儲在數據庫中

在此,我宣佈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的價值。但是在數據庫中,該表沒有列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" 
    ) 
    

回答

4

store=True作品。 在數據庫上創建它之後,可能會將計算添加到該字段中。在這種情況下,不會觸發初始計算。

解決方法是將列從表格中刪除,然後升級您的模塊。當字段被重新創建時,應計算初始值。

相關問題