Cha*_*mal 5 python onchange openerp python-2.7 odoo-8
我想在我的模块中加载与讲师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
Run Code Online (Sandbox Code Playgroud)
和我的领域的域名.
<field name="subject_id" domain=_onchange_lecturer />
Run Code Online (Sandbox Code Playgroud)
正确的主题ID列表传递.如何根据这些id列表加载主题....?
如果您使用 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
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地创建函数字段来计算所需主题的 id,然后直接在域中使用。
PS但是你搜索ID的代码看起来很奇怪,不知道你为什么这样做。
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |