Домен поля зависит от другого - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть класс с полем 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)]}}

1 Ответ

0 голосов
/ 17 декабря 2018

@ Dayana Помимо метода onchange, вы должны пройти через метод вычисления.Иначе я покажу вам точный сценарий того, что вы ищете.

class FleetVehicle(models.Model):
    _inherit = 'fleet.vehicle'
emirate_id = fields.Many2one('res.country.state', string="Emirate", domain="[('country_id', '=','United Arab Emirates')]")

@api.onchange('emirate_id')
    def onchange_emirate(self):
        self.plate_type_id = False
        if self.emirate_id:
            return {'domain': {'plate_type_id': [('id', 'in', self.emirate_id.plate_type_ids.ids)]}}
        else:
            return {'domain': {'plate_type_id': [('id', '=', False)]}}

class CountryState(models.Model):
    _description = "Country state"
    _inherit = 'res.country.state'

    plate_type_ids = fields.Many2many('vehicle.plate.type', string="Plate Types")

Надеюсь, вы понимаете это.Спасибо!

Не забудьте высказать это и поставить галочку.

...