Python 使用Odoo Create方法创建批处理记录

Python 使用Odoo Create方法创建批处理记录,python,odoo,odoo-12,odoo-13,Python,Odoo,Odoo 12,Odoo 13,我正在尝试从一系列字典中创建多个发票,这些字典在odoo13中具有create值。 一次创建一个记录是可以的,但是当我尝试批处理记录时,我得到错误无法适应dict类型 我尝试在数组中循环并为其中的每个项创建一个记录,但此错误仍然存在 我目前正在检查@api.model\u create\u multi装饰器,但还没有完全掌握它 我想要的是,对于visa_行中的每一行(与订单行相同),从该行创建发票。创建发票时缺少某些字段,但这不应是问题所在 在最后一个函数中,当我打印记录时,它会正确打印具有值的

我正在尝试从一系列字典中创建多个发票,这些字典在odoo13中具有create值。 一次创建一个记录是可以的,但是当我尝试批处理记录时,我得到错误
无法适应dict类型

我尝试在数组中循环并为其中的每个项创建一个记录,但此错误仍然存在

我目前正在检查
@api.model\u create\u multi
装饰器,但还没有完全掌握它

我想要的是,对于visa_行中的每一行(与订单行相同),从该行创建发票。创建发票时缺少某些字段,但这不应是问题所在

在最后一个函数中,当我打印记录时,它会正确打印具有值的风管

这是我的密码,先谢谢你

    def _prepare_invoice(self):
        journal = self.env['account.move'].with_context(
            default_type='out_invoice')._get_default_journal()

        invoice_vals = {
            'type': 'out_invoice',
            'invoice_user_id': self.csa_id and self.csa_id.id,
            'source_id': self.id,
            'journal_id': journal.id,
            'state': 'draft',
            'invoice_date': self.date,
            'invoice_line_ids': []
        }
        return invoice_vals

    def prepare_create_invoice(self):
        invoice_val_dicts = []
        invoice_val_list = self._prepare_invoice()
        for line in self.visa_line:
            invoice_val_list['invoice_partner_bank_id'] = line.partner_id.bank_ids[:1].id,
            invoice_val_list['invoice_line_ids'] = [0, 0, {
                'name': line.code,
                'account_id': 1,
                'quantity': 1,
                'price_unit': line.amount,
            }]
            invoice_val_dicts.append(invoice_val_list)
        return invoice_val_dicts

    @api.model_create_multi
    def create_invoice(self, invoices_dict):
        invoices_dict = self.prepare_create_invoice()
        for record in invoices_dict:
            print(record)
            records = self.env['account.move'].create(record)


我通过使用管道显式地修复记录,解决了这个问题。使用不带
@api.model\u create\u multi的普通创建方法

def create_invoice(self):
   invoices_dict = self.prepare_create_invoice()
   for record in invoices_dict:
       records = self.env['account.move'].create(dict(record))

invoice\u line\u id
的格式不正确,它应该是一个命令列表,其中每个命令都是三元组。但是当前格式在尝试创建单个发票时有效。当
self.visa\u line
为空时,
invoice\u line\u id
的值为
[]
我认为如果您添加完整的错误日志,会更有帮助。其他人可以很容易地检查哪一行代码导致了错误。对于延迟,我深表歉意,这就是确切的错误
odoo13 odoo.sql\u db:错误查询:从“帐户移动行”中选择“帐户移动行”。id,其中(((((“帐户移动行”。“移动行”。“id”不在(%s))和((“帐户移动行”。“id”不在(%s))或“帐户移动行”。“id”为空))按顺序排列“账户移动线”。“日期”描述,“账户移动线”。“移动名称”描述,“账户移动线”。“id”错误:无法调整类型“dict”