【问题标题】:Compute method is failing to assign values - Odoo 14计算方法无法分配值 - Odoo 14
【发布时间】:2021-08-20 16:13:44
【问题描述】:

我正在尝试在用户属于项目时分配值,在这种情况下是分配给他的项目名称和经理,但计算方法出错,我尝试登录值以防万一其中一个是空的,但没有,他们肯定有所需的数据。 我们可以在日志中看到: 根:人员扩充 - project_task.project_id.display_name 根:120 - project_task.project_id.delivery_director.id

@api.depends('user_id')
    @api.model
    def _get_assigned_project(self):
        today = fields.Date.today()
        for employee in self:
            project_task = self.env['project.task'].search([('user_id','=',employee.user_id.id),
                                                                ('status','=','assigned'),
                                                                ('date_end','>',today),
                                                                ('project_id.original_project_id', '=', False)], order='date_end desc', limit=1)
            if project_task:
                employee.project_name = project_task.project_id.display_name
                if project_task.project_id.role_id.name = 'Delivery Manager' and employee.base_manager != 0:
                    employee.parent_id = project_task.project_id.delivery_director.id
                else:
                    employee.parent_id = project_task.project_id.delivery_manager.id
            else: 
                employee.project_name = ""
                if employee.base_manager != 0:
                    employee.parent_id = employee.base_manager

这是错误:

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/http.py", line 640, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/home/odoo/src/odoo/odoo/http.py", line 316, in _handle_exception
    raise exception.with_traceback(None) from new_cause
ValueError: Compute method failed to assign hr.employee(266,).project_name

【问题讨论】:

  • 员工应该有一个元组吗?有时这是一个偷偷摸摸的尾随逗号的结果
  • 不,员工不应该只有一个值的元组
  • 我在这个函数中使用的字段是:project_name = fields.Char('project.project', compute='_get_assigned_project') & base_manager = fields.Integer('Base Manager')

标签: python odoo odoo-14


【解决方案1】:

您需要在您的计算方法中分配employee.parent_id,如果您的if else 未能将值分配给该字段,则会出现此错误。

所以检查你的方法并在你的 if 条件后面加上一个 else 条件,并给出像employee.parent_id = False 这样的赋值。 因为在任何情况下,如果您的计算方法未能分配我们认为应该分配的值,那么它们就会引发错误。

【讨论】:

    【解决方案2】:

    为要分配的字段设置默认值,以防它不满足计算的分配条件

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 2018-07-03
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多