如何自动将one2many字段值填充到odoo

时间:2016-09-16 05:59:43

标签: python odoo-8

我有两个one2many字段,它存在于单个模型中,存在于不同的模型中。

    class modelA(models.Model):
       _name = 'modela'

       fila = fields.One2many('main','refa')

   class moddelB(models.Model):
      _name = 'modelb'

      filb = fields.One2many('main','refb')


   class main(models.Model):
     _name = 'main'

     name = fields.Char('Name')
     date = fields.Date('Date')
     refa = fields.Many2one('modela')
     refb = fields.Many2one('modelb')

我将在 modela 中创建记录。在这个模型中有一个按钮。点击该按钮后,我需要将所有的细丝值复制到 modelb 的filb字段。我怎么能这样做。

2 个答案:

答案 0 :(得分:1)

您需要使用One2manu values filling

XML代码

<button name="copy2b" type="object" string="COPY"/>  

Python代码

@api.multi
def copy2b(self):
    for record in self:
        filb_values = [(0, 0, {'name': line.name, 'date': line.date}) for line in record.fila]
        vals = {'filb': filb_values}
        # Just pass these values to `create` or `write` method to save them on `modelb`

答案 1 :(得分:0)

for record in ids:
    field_vals=[(0,0,{'product_name':line.product_id.name,'qty':line.quantity}) for line in record.invoice_line_ids]
    vals={'inv_products':field_vals}

    my_invoices=self.env["cron.invoice"].search([])
    my_invoices.write(vals)

为我工作。 在这里,我从account.invoice模型的invoice_line_ids字段获取产品。 “用于记录ID” 这里的id是对应的发票。 然后我使用“记录”遍历发票,因此可以访问invoice_line_ids一个发票的许多字段。 “ inv_products”是我在同一模型中的另一个one2many字段,即“ cron.invoice”。 在写入同一模型之前,我曾使用create方法创建一些字段。那么我可以使用search()方法。它将返回所有创建的记录。