如何使用odoo中的create function将详细信息添加到作为many2many字段的结果创建的表中

时间:2016-06-08 05:53:12

标签: python odoo-8

我的应用程序中有自定义模型 csm 。我有一个 many2many 字段作为 product_multi 提供给 product.product 。这个many2many字段导致创建另一个名为 csm_product_product_rel 的表。现在我需要使用环境和创建函数从account.invoice模型创建此表中的记录。

我尝试的是......

id

但它给出了错误,如价值错误" csm_product_product_rel"在评估时。如果我使用相同的代码self.env['csm_product_product_rel'].create({ 'customer_service_management_id': ticket_id, 'product_product_id': 1, }) ,它不会给出任何错误。可能是什么问题。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

这是你必须编写create函数的方法。请查看下面的示例代码并尝试

def create(self, cr, uid, values, context=None):
            partner_id=values.get('partner_id')
            if partner_id:
                emp_ids=values.get('employee_ids')
                if emp_ids:
                    for line in emp_ids:
                        self.pool.get('res.partner').write(cr, uid, partner_id, {'employee_ids': [(4, line[2])]}, context=context)
            return super(sale_order, self).create(cr, uid, values, context=context)

答案 1 :(得分:2)

这是因为模型csm_product_product_rel不存在。存在于数据库中的表,但不存在python代码中的模型。

您已定义了从csm模型到product.product模型的关系。如果要添加新的关系记录,则需要执行此操作 通过csm模型,如下所示:

self.write({'many2manyfield': [(4, product.id)]})

其中selfcsm模型的记录。

Here您有special commands的列表来管理* 2many字段的记录。