Odoo12 TypeError

时间:2019-04-25 10:27:09

标签: events typeerror handler odoo-12

from odoo import models,fields

# car/models/car.py
class Car(models.Model):
   _name = 'car.car'

   name  = fields.Char('Car name', size=25)
   brand = fields.Char('Car brand',default='Citroën DS',size=25)
   country = fields.Char('Country name ',default='France',size=30)

   def __init__(self):

      return 'The car name is : %s,\nIts brand is : %s,\nIts manufactured country is : %s.\n' %    (self.name,self.brand,self.country)

# car/models/product_template.py

class ProductTemplate(models.Model):
   _inherits = 'product.template'
   _name     = 'product.template'

   car       = fields.Many2one('car.car', string='Car name', ondelete='SET NULL', auto_join=True)

我的错误是:在将汽车信息输入“销售/产品/产品”之前,在“常规信息”选项卡中,我在“产品类型”字段中选择了“可存储产品”值。现在,我正在成功填写汽车信息,“保存”。我想编辑“产品类型”的值,从“可存储产品”到“消耗品”或“服务”,我得到了  此错误:

文件“ /odoo/odoo12/odoo/models.py”,行5384,在onchange中       对于cmd中的值[名称]:   TypeError:“ int”对象不可迭代”

请帮助。

2 个答案:

答案 0 :(得分:0)

car_id       = fields.Many2one('car.car', string='Car name', ... )

答案 1 :(得分:0)

您覆盖__init__方法并更改了其签名,Odoo将引发以下错误:

TypeError: __init__() takes 1 positional argument but 3 were given

您可以尝试:

def __init__(self, pool, cr):

使用inherits时,请提供新名称(_name = new),因为如上所用,Odoo会引发错误:

ValueError in (cls._inherits.update(base._inherits)): dictionary update sequence element #0 has length 1; 2 is required

要将car添加到现有模型product.template中,您需要使用inherit(在此示例中,不必使用_name)。在inheritance-and-extension

检查inheritinherits之间的差异

根据错误消息和行号,在评估 on_change 方法中的 x2many 字段时会引发错误。它与car字段无关。