【问题标题】:Using function in domain filter在域过滤器中使用函数
【发布时间】:2015-05-27 08:14:58
【问题描述】:

我想在我的模块中加载与讲师 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 列表加载主题....?

【问题讨论】:

    标签: python python-2.7 openerp onchange odoo-8


    【解决方案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,然后直接在域中使用。

    附:但是您搜索ID的代码看起来很奇怪,不知道您为什么要这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多