Odoo错误:TypeError:' int'对象不可迭代

时间:2016-04-06 14:52:51

标签: python openerp odoo-9

我在发票模块中创建了一个功能。你应该做的是让这个功能产品线是相同的发票并返回每个产品的数量。在下图中更好地解释了这一点:

enter image description here

例如,产品" Aceite Hidraulico"发票上出现3次。然后该函数应为此产品返回3。

嗯,这是我在account.invoice.py中的功能:

total_quantity = fields.Integer(compute='count_invoice_invoice', string = 'Cantidad Productos', readonly = True, store=True)

@api.one
@api.depends('invoice_line_ids.product_id')
def count_invoice_invoice(self):
    res = {}
    counter = 0
    for po in self.invoice_line_ids:
        for product in po.product_id.id:
            counter += 1
            res [self.total_quantity] = counter
    return res

对于区分一个产品和另一个产品的功能,我使用id字段product.product model。但是当我尝试创建发票时,Odoo向我显示了一个消息,int类型字段不能是iterables。这是一个问题,因为区分产品的id字段是一个整数。

我该怎么办?

这是显示Odoo的消息:

for product in po.product_id.id:
     

TypeError:int对象不可迭代

非常感谢您的帮助和花费的时间。我很欣赏任何有关你想做的事情的建议或意见。

2 个答案:

答案 0 :(得分:1)

似乎你试图循环一个整数。如果要增加计数器,请尝试将其循环到对象上。 对于Ex:

for po in self.invoice_line_ids:
    for product in po.product_id:
        counter += 1
        res [self.total_quantity] = counter
return res

通过这种方式,您可以遍历对象,如果您需要获取每个产品ID,您可以通过循环内的 product.id 获取它。

答案 1 :(得分:0)

实际上你有for循环问题。 你正在尝试循环整数。 po.product_id.id 是整数所以我认为没有必要使用for循环,即使您想要使用for循环使用,如下所示: 对于 [po.product_id.id]

中的产品

由于