[英]How to automatically fill a one2many field values to another one2many field in odoo
我有两个 one2many 字段,它们引用一个模型,存在于不同的模型中。
IE,
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中创建记录。 在这个模型中有一个按钮。 单击该按钮时,我需要将 fila 字段的所有值复制到 modelb 的filb字段。 我怎样才能做到这一点。
您需要使用One2many 值填充
XML 代码
<button name="copy2b" type="object" string="COPY"/>
蟒蛇代码:
@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`
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 字段中获取产品。 “记录在 ids”这里 ids 是对应的发票。 然后我使用“记录”循环通过发票,因此我可以访问发票的 invoice_line_ids one2many 字段。 “inv_products”是我在同一模型中的另一个 one2many 字段,即“cron.invoice”。 在写入同一模型之前,我曾使用 create 方法创建一些字段。 然后我可以使用 search() 方法。 这将返回所有装箱记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.