我想在我的模块中加载与讲师ID相关的主题ID。我使用api onchange如下。
@api.onchange('lecturer_id')
def _onchange_lecturer(self):
if self.lecturer_id:
sub_id =[]
a = []
lecturer = self.lecturer_id.id
query = """select op_subject_id from lecturer_subject_rel where op_lecturer_id='%s'""" % lecturer
self.env.cr.execute(query)
a = self.env.cr.fetchall()
d = 0
for i in a:
e = i[0]
sub_id.append(e)
d += 1
return [('subject_id', 'in', sub_id)]
else:
return None
和我的领域中的域名。
<field name="subject_id" domain=_onchange_lecturer />
正确的主题ID列表传递。如何根据这些id列表加载主题....?
答案 0 :(得分:1)
如果您使用onchange方法放置域名,则不需要在xml中的字段上放置任何域名。
您可以这样做:
@api.onchange('lecturer_id')
def _onchange_lecturer(self):
res = {}
if self.lecturer_id:
sub_id =[]
a = []
lecturer = self.lecturer_id.id
query = """select op_subject_id from lecturer_subject_rel where op_lecturer_id='%s'""" % lecturer
self.env.cr.execute(query)
a = self.env.cr.fetchall()
d = 0
for i in a:
e = i[0]
sub_id.append(e)
d += 1
res['domain] = {'subject_id': [('id', 'in', sub_id)]}
else:
res['domain] = {'subject_id': []}
return res
或者您可以简单地创建函数字段来计算您所需主题的ID,然后直接在域中使用。
P.S。但是你的代码搜索ID看起来很奇怪,不知道你为什么这样做。