выход из lot_id в stock.move.line, показывающий то же значение из вычислительного поля

#python-3.x #odoo #odoo-12

#python-3.x #odoo #odoo-12

Вопрос:

У меня возникла проблема с тем, что lot_name не показывает то же значение из другого вычислительного поля в том же наборе записей, stock.move.line. ниже приведен мой код:

 class StockMoveLine(models.Model):
_name = 'stock.move.line'
_inherit = 'stock.move.line'

lotter = fields.Char(string="Supplier Lot", compute='_compute_partner')

def _compute_partner(self):
    
    if not self.lotter:
        partner_id = self.env['stock.picking'].search([('name','=',self.reference)]).partner_id.id    
        self.lotter = str(partner_id) 
       
    if self.lot_name == "":
        self.lot_name = self.lotter
    else:
        self.lot_name = "blank"
  

имя_потока уже существовало в поле базового модуля. Поэтому я хотел бы также показать partner_id в поле lot_name. теперь я вижу его только в своем новом вычислительном поле. Я пытался использовать @api.onchange, но это работает только тогда, когда текстовое поле lotter потеряно из фокуса. как я могу сделать, чтобы отобразить одно и то же значение в полях lotter и lot_name, если ранее значения не было?

Ответ №1:

Добавьте store = True в свое поле.Поскольку вычислительное поле не хранится в вашей базе данных.

 lotter = fields.Char(string="Supplier Lot", compute='_compute_partner', store=True)
  

Комментарии:

1. Функция нуждается for rec in self: в многотипном решении