Odoo: поиск записей из модели и копирование в другую модель

У меня есть 2 класса в Odoo: opc_taginstellingen en opc_actuelewaardentags.

В opc_taginstellingen у меня есть поля tagnaam и unit.

В opc_actuelewaardentags у меня также есть поле tagnaam и unit.

Я хочу сравнить tagnaam и извлечь модуль из opc_actuelewaardentags.

Если opc_actuelewaardentags.tagnaam == opc_taginstellingen.tagnaam, тогда найдите opc_taginstellingen.unit и скопируйте его в opc_actuelewaardentags.unit.

Я пытался сделать это так:

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

    tagnaam = fields.Char(string="Tagnaam")
    unit = fields.Char(string="unit")
    tag_instellingen = fields.Many2one('opc_actuelewaardentags')

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

    tagnaam = fields.Char(string="Tagnaam")
    tag_instelling = fields.One2many(comodel_name='opc_taginstellingen', inverse_name='tag_instellingen')

    @api.one
    def changeUnit(self):
        instellingen = self.env['opc_taginstellingen'].search([('id','=',self.tag_instelling.id)])
        ret = ""
        for instelling in instellingen:
            ret = instelling.unit
            print ret
        return ret

    unit = fields.Char(default=changeUnit, string="unit1") 

Но этот код не работает. Я думаю, что даже не может измениться...

Я также пытался@api.multi вместо @api.oneа также

unit = fields.Char(compute='changeUnit', string="unit1") вместо

unit = fields.Char(default=changeUnit, string="unit1")

У кого-нибудь есть идеи, почему этот код не работает?

Если мое объяснение неясно, пожалуйста, дайте мне знать.

1 ответ

class opc_taginstellingen(models.Model):
    _name = 'opc.taginstellingen'

    tagnaam = fields.Char(string="Tagnaam")
    unit = fields.Char(string="unit")
    tag_instellingen = fields.Many2one('opc_actuelewaardentags')

class opc_actuelewaardentags(models.Model):
    _name = 'opc.actuelewaardentags'

    tagnaam = fields.Char(string="Tagnaam")
    tag_instelling = fields.One2many('opc.taginstellingen')

    def changeUnit(self):
        for opc_tag in self.tag_instelling:
        if opc_tag.tagnaam==self.tagnaam:
           return opc_tag.unit

    unit = fields.Char(default=changeUnit, string="unit1") 
Другие вопросы по тегам