首页 > 解决方案 > Odoo:如何在 Transient.Model 中创建许多记录?

问题描述

此代码仅创建一条记录。怎么了?

class PartnerTagCreate(models.TransientModel):

    """ Choose tags to be added to partner."""
    _name = 'partner.tags.create'
    _description = __doc__

    market_id = fields.Many2one('partner.tags', string='Market Tag')
    application_id = fields.Many2one('partner.tags', string='Application Tag')
    partner_id = fields.Integer()

    @api.multi
    def create_contact_tag(self):

        for record in self.env['sale.order.line'].browse(self._context.get('active_ids', [])):

            vals = {}
            vals['partner_id'] = record.order_partner_id

            self.write(vals)
        return True

order_partner_id在打开向导之前,我需要此功能为我选择的每个记录创建一个记录...

如何做到这一点?

这是我的新代码(函数)...

def create_contact_tag(self):
    sale_order_line_ids = self.env['sale.order.line'].browse(self._context.get('active_ids', []))
    for partner in sale_order_line_ids:
        values = {}
        values['partner_id'] = partner.order_partner_id
        self.create(values)
    return {}

这将为marketing_id 和/或application_id 创建一个记录,并为记录中的每个partner_id 创建一个专用记录。

标签: pythonodoorecordwizard

解决方案


您使用“创建”方法创建新记录;TransientModel 与持久模型相同。所以,更换

self.write(vals)

经过

self.create(vals)

你应该没事。


推荐阅读