预期单例:res.users() 以编程方式创建新发票时

Expected singleton: res.users() when create new invoice programmatically

我正在尝试在控制器中创建新发票:

request.env['account.move'].sudo().create([
    {
        'move_type': 'out_invoice',
        'journal_id': 1,
        'invoice_date': '2020-01-10',
        'invoice_line_ids': [(0, 0, {'product_id': 21, 'price_unit': 1000.0})],
    }])

但是我遇到了这个错误

Expected singleton: res.users()

请帮忙,谢谢。

在领导的帮助下我找到了答案,这里是:

这个问题是因为我们缺少 self.env.user,为此,我们必须在模型调用后添加 .with_user(SUPERUSER_ID)

示例:

from odoo import SUPERUSER_ID

request.env['account.move'].with_user(SUPERUSER_ID).sudo().create([
    {
        'move_type': 'out_invoice',
        'journal_id': 1,
        'invoice_date': '2020-01-10',
        'invoice_line_ids': [(0, 0, {'product_id': 21, 'price_unit': 1000.0})],
    }])