Как запустить вычисления на one2many odoo 13 - PullRequest
0 голосов
/ 30 апреля 2020

Ниже приведен мой код: я также пытался поместить обратное поле, но это также не сработало. Также я не могу создать другой класс, который наследует sale.order, так как это временная модель, поэтому она не работает. Пожалуйста, помогите, я новичок в odoo.

class WizardDraft(models.TransientModel):
    _name = 'wizard.draft'

    sale_order_lines =  fields.One2many('sale.order', compute="_compute_sale_orders")

    @api.model
    def _compute_sale_orders(self):
        self.sale_order_lines = self.env['sale.order'].search([('state', '=', 'draft')])

1 Ответ

1 голос
/ 30 апреля 2020

Вы не можете использовать отношение One2Many Моделей (models.Model) в Transient Model (models.TransientModel), потому что Transient модель сохраняет данные временно и сбрасывает их. Поэтому Many2one, который вы создаете в Transient Model, не очень хорошая идея.

Так что в этом случае вы можете использовать Many2many модели (sale.order) в модели Transient (wizard.draft) и заставить ее вычислять поле.

class WizardDraft(models.TransientModel):
    _name = 'wizard.draft'

    sale_order_lines =  fields.Many2many('sale.order', compute="_compute_sale_orders")

    @api.model
    def _compute_sale_orders(self):
        self.sale_order_lines = self.env['sale.order'].search([('state', '=', 'draft')])
...