Odoo 8 - Вычислительное поле с store = True не может храниться в базе данных

Я использую 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. Но в базе данных таблица не имеет столбца 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"
    )
    

person Tuan Tran    schedule 03.03.2015    source источник


Ответы (1)


store=True работает. Возможно, вы добавили вычисление в поле после того, как оно было создано в базе данных. В этом случае начальное вычисление не запускается.

Чтобы решить эту проблему, удалите столбец из таблицы и затем обновите модуль. Когда поле воссоздается, необходимо вычислить начальные значения.

person Daniel Reis    schedule 04.03.2015