Как вернуть список объектов в поле many2one - PullRequest
1 голос
/ 11 марта 2020

Я объявил поле many2one

packaging_id = fields.Many2one(
        'product.packaging', 'Package type', compute='_compute_package_type',
        index=True)

Поэтому мне нужно сделать лог c, чтобы вернуть объекты, которые я хочу показать в списке. Я пробовал это, используя опцию вычисления, но я не уверен, что это правильно. Следуйте моему полю вычислений

@api.multi
    def _compute_package_type(self):
        pckdel = self.batch_id.package_delivery_group
        order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
        type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
        if type.delivery_type == 'test' or type.delivery_type == 'xxx':
            package_objs = self.env['product.packaging'].sudo().search([])
        else:
            package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
        self.packaging_id =  package_objs.ids

Однако это не удается и не отображается в раскрывающемся списке с package_ob js. Может кто-нибудь, пожалуйста, помогите мне в этом?

СПАСИБО ТАК МНОГО

1 Ответ

1 голос
/ 11 марта 2020

В сценарии этого типа вы должны использовать domain вместо compute

def compute_package_type(self):
            pckdel = self.batch_id.package_delivery_group
            order = self.env['ord.data'].search([("pckdelgrp", "=", pckdel)], limit=1)
            type = self.env['delivery.carrier'].search([("name", "=", order.deliverymethod)], limit=1)
            if type.delivery_type == 'test' or type.delivery_type == 'xxx':
                package_objs = self.env['product.packaging'].sudo().search([])
            else:
                package_objs = self.env['product.packaging'].search([("packager_carrier_type", "=", type.delivery_type)])
            return [('id','in',package_objs.ids)]


packaging_id = fields.Many2one(
        'product.packaging', 'Package type', domain=compute_package_type)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...