簡體   English   中英

通過將值分配給many2many字段來創建塊對象

[英]Creating block objects by assigning values to many2many field

我正在嘗試創建一個功能來通過向導創建大量實例,並為許多許多字段分配值,但是在測試時出現錯誤:

Singleton expected: model3(167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 188, 187, 188, 190, 191, 193, 194, 195, 1978, 1978, 2007, 1920, 202, 203, 204, 20, 20, 20, 20, 20, 20, 20, 20, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246)

如果您可以幫助我,我會保留代碼。

class Modelo1Model(models.Model):
    _name = 'modelo1'

    mod1_modelo3_ids = fields.Many2many('modelo3')

class Modelo2Model(models.Model):
    _name = 'modelo2'

    mod2_modelo3_ids = fields.Many2many('modelo3')

class Modelo3Model(models.Model):
    _name = 'modelo3'

    #...

class Modelo1Wizard(models.TransientModel):
    _name = 'modelo1.wizard'

    def _default_i(self):
        return self.env['modelo1'].browse(self._context.get('active_ids'))

    modelo1_ids = fields.Many2many(
        'modelo1',
        default = _default_i)

    @api.multi
    def create_modelo2(self):
        for i in self.modelo1_ids:
            registros_many2many = i.mod2_modelo3_ids.ids
            i.ensure_one()
            modelo2_obj = self.env['modelo2']
            modelo2_vals = {
                'mod2_modelo3_ids': registros_many2many
                 }
            modelo2_create_id = modelo2_obj.create(modelo2_vals)

@api.multi

當您使用此裝飾器裝飾您的方法時,您暗示self將成為記錄集。 為了正確地寫入記錄,您必須進行迭代。 例:

@api.multi
    def create_modelo2(self):
        for record in self:
            for i in record.modelo1_ids:

通過遵循這個解決,這里展示了如何使用字段x2many

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM