Openerp 编程错误:can';t适应类型';账户、发票和#x27;方法
我想循环检查我所有的发票,但得到这个错误。如果我更改库存[0].id,它将工作,但仅循环第一张发票。如何使其循环所有发票Openerp 编程错误:can';t适应类型';账户、发票和#x27;方法,openerp,odoo-8,odoo-9,Openerp,Odoo 8,Odoo 9,我想循环检查我所有的发票,但得到这个错误。如果我更改库存[0].id,它将工作,但仅循环第一张发票。如何使其循环所有发票 def generate(self): Invoice = self.env['account.invoice'] inv = Invoice.browse(Invoice.search([])) invoice = inv and inv[0] for inv in invoice:
def generate(self):
Invoice = self.env['account.invoice']
inv = Invoice.browse(Invoice.search([]))
invoice = inv and inv[0]
for inv in invoice:
root = etree.Element('000')
po_code = etree.SubElement(root, '22')
po_code.text = str(inv.id) or ''
return root
ProgrammingError: can't adapt type 'account.invoice'
当我们调用self.env['account.invoice'].search([])时,我们将收到一个所有记录的记录集,该记录集存储在
account.invoice
模型中。再次将该记录集放入browse
方法是多余的,因为该方法还返回一个记录集。此外,它不应该工作,因为browse
方法需要您提供一个id或这些id的列表。查看文档
从现在开始,您只需通过for
循环对记录集进行迭代即可。每次您都将从该记录集中获得一条记录,因此您只能对其进行操作
def generate(self):
for record in self.env['account.invoice'].search([]):
# go ahead with each record
当我们调用self.env['account.invoice'].search([])时,我们将收到一个所有记录的记录集,该记录集存储在
account.invoice
模型中。再次将该记录集放入browse
方法是多余的,因为该方法还返回一个记录集。此外,它不应该工作,因为browse
方法需要您提供一个id或这些id的列表。查看文档
从现在开始,您只需通过for
循环对记录集进行迭代即可。每次您都将从该记录集中获得一条记录,因此您只能对其进行操作
def generate(self):
for record in self.env['account.invoice'].search([]):
# go ahead with each record
以您的示例为例,for循环由于某种原因只接受第一张发票,然后停止。我有50个,如果你用的是你问题中的代码,那可能是因为你把return语句放在了循环的主体中。它只会迭代一次,然后返回根,这是肯定的。我有50个,如果你用的是你问题中的代码,那可能是因为你把return语句放在了循环的主体中。它只会迭代一次,然后返回根,这是肯定的。