我目前正在使用odoo Sales -sales orders的本地模块,我想在按下按钮时传递One2many字段的注册,该按钮将我重定向到我创建的另一个新公式,并具有字段One2Mnay。
示例:这是odo的本机模块,我在这里注册销售订单:

我已经创建了一个新的底部,它是红色的,注册商说,名为method: open_budget,它允许打开我创建的新表单,并且有一个字段one2many:
我的模型:
新形式的模型:
class BudgetTwo(models.Model):
_name = 'budget.two'
name = fields.Char(string ='Nombre', copy=False, index=True ,default ="Nuevo")
partner_id =fields.Many2one('res.partner' ,string ='Cliente', copy=False, index=True,required=True)
deliver_date = fields.Date(string ='Fecha de Entrega')
expiration_date = fields.Date(string ='Fecha de expiración')
pay_place =fields.Many2one('account.payment.term' ,string='Plazo de Pago')
order_line = fields.One2many('budget.table','budget_id' ,string = 'Pedidos' )
total = fields.Float(string = 'Total:' ,compute="_total")
btn_d = fields.Boolean(default = False)继承odoo自己的模块:
class InheritOrder(models.Model):
_inherit = 'sale.order'
@api.multi
def open_budget(self):
if self.order_line:
for element in self.order_line:
data = element.product_id.id
else:print('none')
print(data)
return {
'name': ('Payments'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'budget.two',
'view_id': False,
'type': 'ir.actions.act_window',
'context': {
'default_partner_id': self.partner_id.id,
'default_order_line.product_id': data,
'default_order_line.product_id': data,
},
}odoo的本地模块有一个字段One2many,当我按下新的botton loogre重定向到我创建的新表单,并创建了一个字典,其中有一个名为context的关键字,我可以传递字段中的记录,但不传递one2many values中的记录。
最后:
'context': {
'default_partner_id': self.partner_id.id,
'default_order_line.product_id': data,
'default_order_line.product_id': data,
},如果记录通过,但default_order_line.product_id没有通过作为on2many的记录,则为desauld_pernert_id,如您所见:

发布于 2018-08-28 12:59:54
你可以这样试一下
class InheritOrder(models.Model):
_inherit = 'sale.order'
@api.multi
def open_budget(self):
ctx = dict()
if self.order_line:
products={}
for line in self.order_line:
# You can get whatever field from sale order line
products.update({'product_id': line.product_id.id})
product_line.append((0, 0, products))
ctx.update({
'default_order_line': product_line,
'default_partner_id': self.partner_id.id,
})
return {
'name': ('Payments'),
'view_type': 'form',
'view_mode': 'form',
'res_model': 'budget.two',
'view_id': False,
'type': 'ir.actions.act_window',
'context': ctx,
}发布于 2018-08-28 16:17:45
有一种特殊的语法可以将值传递给x2many fields。
如果要创建新行,应使用:
'context': {
'default_partner_id': self.partner_id.id,
'default_order_line.product_id': [(0, 0, {'field_name': its value,..}),
...,
(0, 0, {'field_name': its value, ..})
]
},https://stackoverflow.com/questions/52039990
复制相似问题