odoo中one2many的那些事[乐乐独记]

一、创建数据

1、直接创建

直接在字段后面去添加创建

values1 = {
   'name': 'zhangsan',
    'company_id': 6,
}
values2 = {
    'name': 'zhaoliu',
    'company_id': 5,
}
self.current_one2many_ids = [(0, 0, values1),(0, 0, values2)...]

2、先创建后赋值

先为此字段的关系表去创建两条记录,例如表名relationship_table
借用一下上面的values1、values2

步骤:
1、先在关系模型中去创建需要的数据
2、创建的同时取出它们的id,放在一个列表中
3、将存放id的列表直接赋给one2many字段

values = [values1,values2]
all_head_ids = []
for rec in values:
	res = self.env['relationship.table'].create(rec)
	all_head_ids.append(res.id) 
# 返回一个头id列表给one2many字段
self.current_one2many_ids = all_head_ids 

或者下面这种方式:

for rec in values:
	self.current_one2many_ids += 
	self.env['cms.marketing.tracking.line'].new(rec)

二、更新数据

@api.multi
def write(self, vals):
	# distribute_line_ids是一个one2many字段,修改它的第一条数据
    vals['distribute_line_ids'] = [(1,self.distribute_line_ids[0].id,{'company_active':True})]
    return super(ResPartnerDistribution, self).write(vals)

三、删除数据

@api.multi
def write(self, vals):
	# distribute_line_ids是一个one2many字段,删除它的第一条数据
    vals['distribute_line_ids'] = [(2,self.distribute_line_ids[0].id)]
    return super(CmsBaseDataResPartnerDistribution, self).write(vals)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Odoo,可以通过Many2one字段给Many2many字段传递值。这可以通过使用Odoo的特殊语法和API来实现。 具体方法如下: 1. 在Many2one字段对应的模型,添加一个Many2many字段,用于存储传递的值。例如,我们在模型A添加一个Many2many字段,用于存储传递给模型B的值。 ```python class ModelA(models.Model): _name = 'model.a' name = fields.Char(string='Name') value_ids = fields.Many2many(comodel_name='model.b', string='Values') ``` 2. 在Many2one字段对应的模板,添加一个Many2many字段的下拉菜单,用于选择传递的值。这可以通过使用Odoo的特殊语法和API来实现。例如,我们在模板添加一个下拉菜单,用于选择传递给模型B的值。 ```xml <field name="value_ids" widget="many2many_tags"/> ``` 3. 在Many2one字段对应的模型,添加一个按钮,用于触发传递操作。按钮的onClick方法,通过API获取Many2many字段的值,并将其传递给Many2one字段对应的。例如,我们在模型A添加一个按钮,用于触发传递操作。 ```python @api.multi def transfer_values(self): for record in self: values = record.value_ids.ids record.other_model_id.write({'many2many_field': [(6, 0, values)]}) ``` 在上述代码,我们通过API获取Many2many字段的值,并将其传递给Many2one字段对应的。 通过上述方法,我们可以实现Many2one字段给Many2many字段传递值的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值