Как динамически изменить домен поля Many2one в ODOO - PullRequest
0 голосов
/ 10 января 2019

Я хочу динамически изменять домен поля many2one каждый раз, когда значение dul изменяется #dul является логическим

в первом случае, чтобы domain="[('parent_id', '!=', False), ('parent_id', '=', imeReona)]", а в другом случае domain="[('parent_id', '!=', False)]"

Я пытался:

my_many2one_field = fields.Many2one(..., domain=lambda self: self.env['ir.config_parameter'].sudo().get_param('domen_mm2o'))

@api.onchange('dul') def _onchange_dul(self): if (self.dul == True): res = "[('parent_id','!=',False),('parent_id','=',imeReona)]" else: res = "[('parent_id','!=',False)]" self.env['ir.config_parameter'].sudo().set_param('domen_mm2o',res)

Если я не был достаточно ясен или плохо сформулировал вопрос, пожалуйста, дайте мне знать

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я исправил код. Из my_many2one_field я снял , domain=lambda self: self.env['ir.config_parameter'].sudo().get_param('domen_mm2o')

и обновленный

@api.onchange('dul')
def _onchange_dul(self):
    if (self.dul == True):
        res = "[('parent_id','!=',False),('parent_id','=',imeReona)]"
    else:
        res = "[('parent_id','!=',False)]"
    self.env['ir.config_parameter'].sudo().set_param('domen_mm2o',res)

добавил следующий код

    return{
        'domain': {'my_many2one_field': self.env['ir.config_parameter'].sudo().get_param('domen_mm2o')}}
0 голосов
/ 14 января 2019
@api.onchange('partner_id')
def apply_domain_customer(self):
    vehicles = self.env['fleet.vehicle'].search([('driver_id', '=', 
      self.partner_id.id)]).ids
    return {
        'domain': {
            'vehicle': [('id', 'in', vehicles)]
        }}
...