#python #python-3.x #odoo #odoo-11 #zohobooks
#python #python-3.x #odoo #odoo-11 #zohobooks
Вопрос:
У меня есть три модели
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
, в котором отображаются параметры для каждого тега, такие как:
У тега (division) есть параметры (A, B, C), и эти параметры имеют одинаковые
tag_ids
сохраненные для тега (division)
Я хочу добавить домен в 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)]
Ответ №1:
Я должен с этим разобраться. Вот как я это сделал:
В python:
@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)"/>