Я хочу применить динамический c фильтр к полю many2one (F1) на основе другого поля (F2). Я сделал это, используя @api.change
декоратор, и он работает, но не так, как ожидалось.
Когда я создаю новую сущность, я изменяю значение F2, затем go на F1, я нахожу его поданным , Оки, нет проблем.
Когда я закрываю форму, а затем снова ее редактирую, и я go прямо в поле F1, я снова получаю все доступные возможности (не отфильтрованные), мне нужно сначала go до F2 и затем выберите то же значение (уже выбранное ранее), а затем вернитесь к F1.
Есть идеи? (под кодом: F1 = product_id, который наследуется, и F2 = bom_id)
class ProductionLot(models.Model):
_inherit = "stock.production.lot"
company_id = fields.Many2one(default=lambda self: self.env['res.company']._company_default_get('account.invoice'))
bom_serial_number_line_ids = fields.One2many("mrp.bom.serialnumber.line", "parent_lot_id", "BoM Serial Numbers")
bom_id = fields.Many2one("mrp.bom", "BoM")
@api.onchange('product_id')
def update_bom_id_from_product_id(self):
for record in self:
if (record.product_id):
bom_complex_kit = record.product_id.env['mrp.bom']._bom_find(
product_tmpl=record.product_id.product_tmpl_id,
bom_type='complex_kit')
self.bom_id = bom_complex_kit
return {"domain": {"bom_id": [('product_tmpl_id.id', '=', record.product_id.product_tmpl_id.id),
('type', '=', 'complex_kit')]}}