首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动填充One2many

如何自动填充One2many
EN

Stack Overflow用户
提问于 2018-08-27 21:00:56
回答 2查看 1.5K关注 0票数 0

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

示例:这是odo的本机模块,我在这里注册销售订单:

我已经创建了一个新的底部,它是红色的,注册商说,名为method: open_budget,它允许打开我创建的新表单,并且有一个字段one2many:

我的模型:

新形式的模型:

代码语言:javascript
复制
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自己的模块:

代码语言:javascript
复制
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​​中的记录。

最后:

代码语言:javascript
复制
'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,如您所见:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 12:59:54

你可以这样试一下

代码语言:javascript
复制
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,
          }
票数 1
EN

Stack Overflow用户

发布于 2018-08-28 16:17:45

有一种特殊的语法可以将值传递给x2many fields

如果要创建新行,应使用:

代码语言:javascript
复制
'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, ..})
                                             ]
           },
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52039990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档