【问题标题】:Odoo: How to create many records in Transient.Model?Odoo:如何在 Transient.Model 中创建许多记录?
【发布时间】:2018-12-14 17:02:40
【问题描述】:

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

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 创建一个专用记录。

【问题讨论】:

  • 代码看起来就像您只是“重写”了特定 TransientModel 的 partner_id。你不会在任何时候“创造”。
  • 感谢您的帮助。我已经使用“create”对其进行了测试,它为我创建了一条记录,其中包含 market_id 和 application_id 以及 n 条选定记录的记录(在我的情况下为 sale.order.line)。我想有 n 条记录,其中包含 market_id、application_id 和 partner_id(每个 partner_id 一个记录,没有双重记录)。最好的问候,保罗
  • 抱歉,新点我没完全理解,能不能针对新情况发个新问题?
  • 我添加了我当前的代码...希望对您有所帮助。非常感谢您的帮助。

标签: python odoo record wizard


【解决方案1】:

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

self.write(vals)

通过

self.create(vals)

你应该没事的。

【讨论】:

  • 感谢您的帮助。我已经对此进行了测试,它为我创建了一条记录,其中包含 market_id 和 application_id 以及 n 条选定记录的记录(在我的情况下为 sale.order.line)。我想有 n 条记录,其中包含 market_id、application_id 和 partner_id(每个 partner_id 一个记录,没有双重记录)。最好的问候,保罗
  • 使用此信息重新阅读您的问题清楚地表明您的代码存在多个问题:为什么 partner_id 只是一个整数,而不是 Many2One ('res.partner')?您的方法 create_contact_tag() 是如何调用的? (似乎缺少更多代码)您需要在创建记录之前将所有值设置为 vals dict,包括 market_id、application_id。这些应该从哪里来?为什么将循环变量命名为“partner”,即使它迭代了 sale_order_line_ids? (在您的新代码中)。恐怕这些问题太多了,无法给你一个好的答案……
猜你喜欢
  • 2021-12-22
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多