у меня три модели
class ZohoTags(models.Model):
_name = 'zoho.tags'
name = fields.Char(string = "Tags")
tag_id = fields.Char(string = "Tag Id")
class TagsLine(models.Model):
_name = 'zoho.tags.line'
x_zoho_tags = fields.Many2one('zoho.tags', string='Tags')
x_tags_option = fields.Many2one('zoho.tag.option', string='Tags Option', domain = "[('tag_ids', '=', x_zoho_tags.tag_id)]")
rules_id = fields.Many2one('hr.salary.rule')
class TagOptions(models.Model):
_name = 'zoho.tag.option'
name = fields.Char(string = "tag option name")
option_tag_id = fields.Char(string = "tag option id")
tag_ids = fields.Char(string = "tag_id")
В модели zoho.tags у меня есть поле с именем tag_id, а в модели zoho.tag.option у меня есть tag_ids, и оба имеют одинаковые значения.
В модели zoho.tags.line у меня есть поле Many2one с именем x_zoho_tags, в котором показан список таких тегов, как: division, state, etc. и x_tags_option, в котором показаны параметры для каждого тега, например:
Tag (division) has options (A,B,C) and these options are having the same
tag_idsstored for (division) tag
Я хочу добавить домен в x_tags_option, чтобы фильтровать x_tag_option
чтобы показать только те варианты, которые имеют одинаковые tag_id.
Поэтому, когда я выбираю division из x_zoho_tags, x_tags_option должен показывать только A, B and C.
Я попытался добавить эту строку ниже, но она не работает
domain = "[('tag_ids', '=', x_zoho_tags.tag_id)]






Я разобрался. Вот как я это сделал:
В питоне:
@api.onchange('x_zoho_tags')
def onchange_tags(self):
res = {}
if self.x_zoho_tags:
res['domain'] = {'x_tags_option': [('tag_ids', '=', self.x_zoho_tags.tag_id)]}
return res
В XML:
<field name = "x_zoho_tags"/>
<field name = "x_tags_option" onchange = "onchange_tags(x_zoho_tags)"/>