这是我的结构:
class Imprint_Location(models.Model):
_name = 'imprint.location'
name = fields.Char()
product_id = fields.Many2one('product.template')
class Imprint_Charges(models.Model):
_name = 'imprint.charge'
_rec_name = 'location_id'
product_id_c = fields.Many2one('product.template', required=True)
location_id = fields.Many2one('imprint.location', required=True)
@api.multi
@api.onchange('product_id_c', 'location_id')
def product_filter(self):
res = {}
print '\n\n-------\n\n', self, self.product_id_c, '\n\n-------\n\n'
if self.product_id_c:
res['domain'] = {'location_id': [('product_id', '=', self.product_id_c.id)]}
print res
return res
class Product_Template(models.Model):
_inherit = 'product.template'
imprint_location_ids = fields.One2many('imprint.location', 'product_id')
sale_imprint_charge_ids = fields.One2many('imprint.charge', 'product_id_c')
现在我已经在页面中定义了一个页面,并且product.template
我没有选择该字段[此字段也没有显示在定义的树中]。sale_imprint_charge_ids
<tree editable="bottom">
product_id_c
现在我的问题是,当我从我imprint.charge
为该方法定义的表单视图中选择它时product_filter
工作正常,但是当我从那里输入时,product.template
我得到一个错误说
TypeError: <odoo.models.NewId object at 0x7fbb8bc21b90> is not JSON serializable
因为 from product.template
if 传递了 object <odoo.models.NewId object at 0x7fbb8bc21b90>
,所以如果 printself.product_id_c
然后它打印product.template(<odoo.models.NewId object at 0x7fbb8bc21b90>)
,所以这是不可序列化的。我试过这样做self.product_id_c.ids
给输出空列表[]
。
那么如何product.template
从对象中获取 id 或传递id
自身覆盖某些方法。