繁体   English   中英

Odoo,create() 缺少 1 个必需的位置参数:'vals'

[英]Odoo, create() missing 1 required positional argument: 'vals'

我继承了account_analytic_line的 create function 。 那里的逻辑是,如果字段support_ticket_id出现在 vals 字典中,它将执行 if 语句中的所有代码。

    @api.model
    def create(self, vals):
        for val in vals:
            if 'support_ticket_id' in val:
                ticket_id = vals['support_ticket_id']
                ticket = self.env['website.support.ticket'].search([('id', '=', ticket_id)], limit=1)
                vals['account_id'] = ticket.analytic_account_id.id
        res = super(AccountAnalyticLine, self).create(vals)
        return res

奇怪的是,在我当地的环境中运行良好。 但是在生产环境中,抛出了这个错误:

类型错误:create() 缺少 1 个必需的位置参数:'vals'

更奇怪的是,如果我更改为 @api.multi (我知道它不能在 create 方法中使用,但我只是试了一下)并且在我的本地环境中会抛出同样的错误,但在生产中是工作正常。 所以在本地和生产之间都是倒退的,我不知道是什么触发了这种情况。

尝试使用代码:

@api.model
def create(self, vals):
    if vals.get("support_ticket_id"):
        ticket_id = vals.get("support_ticket_id")
        ticket = self.env['website.support.ticket'].browse(ticket_id)
        if ticket.analytic_account_id:
            vals['account_id'] = ticket.analytic_account_id.id
    res = super(AccountAnalyticLine, self).create(vals)
    return res

几点改进:

  • 如果您有票证的 integer ID,我们可以使用浏览方法。
  • 不必要地使用 for 循环

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM