У меня есть класс с полем many2many (invoice_ids
), домен которого зависит от другого поля (department_id
).Я создал метод onchange для возврата домена каждый раз, когда изменяется поле department_id
.Это работает отлично, но когда я сохраняю объект и пытаюсь его отредактировать, домен не работает, потому что onchange не выполняется.Как я могу изменить свой класс так, чтобы код домена работал также при редактировании объекта без замены поля department_id
?
class MyClass(models.Model):
_name = 'my.class'
department_id = fields.Many2one('hr.department', string="Department", required=True)
invoice_ids = fields.Many2many('account.invoice', 'my_class_invoice_rel', 'my_class_id', 'invoice_id', string="Invoices")
@api.onchange('department_id')
def onchange_department_id(self):
if self.department_id:
some_search_id = self.env['some.model'].search([('department_id', '=', self.department_id.id)])
return {'domain': {'invoice_ids': [('state', '=', 'open'), ('some_model_id', 'not in', some_search_id), ('partner_id.department_id', 'child_of', self.department_id.id)]}}