Я хочу получить значение из динамически заполняемого поля many2many в функции create (), но я получаю такой результат [[6, False, [98]]], 98 на самом деле является ожидаемым результатом, хотя это мой код ниже
class CustomTransRequest(models.Model):
_name = 'custom.trans.request'
_description = 'Transfer Request'
branch_from_id = fields.Many2one('custom.branch', string="From", required=True)
branch_to_id = fields.Many2one('custom.branch', string="To", required=True)
line_id = fields.Many2one('custom.branch.line', string="Products", required=True)
product_id = fields.Many2many('custom.product', required=False, )
qty = fields.Integer(string="Qty", required=True)
@api.onchange('line_id')
def onchange_line(self):
if self.line_id:
for rec in self:
selected_products = rec.env['custom.branch.line'].search(
[('id', '=', rec.line_id.id)]).mapped('product_id')
self.product_id = [(6, 0, selected_products.ids)]
@api.model
def create(self, vals):
print("Create Function ")
print("SELECT id FROM custom_branch_line WHERE (branch_id = %s) AND (product_id = %s)" % (
vals.get('branch_to_id'), vals['product_id']))
result = super(CustomTransRequest, self).create(vals)
return result
product_id
. И помните о правилах именования odoo: поле должно называтьсяproduct_ids
, потому что может быть более одногоcustom.product
. Вот почему в руководстве рекомендуется использовать_id
дляMany2one
и_ids
дляMany2many
иOne2many
полей. - person CZoellner   schedule 04.12.2019