One2many 明细搜索的问题
-
系统自带的模块sales包含了一个one2many类型的order line订单明细,现在有一个需求,就是在sales的主界面上方的搜索区域可以来搜索order line明细的内容。
仿sales和order line做了一个自己的类,如下:<br />#这个类定义常用的产品名称,如手机,电脑,平板等<br />class other_class(osv.osv):<br /> _name = 'detail.class'<br /> _columns = {<br /> 'name': fields.char('产品名称'),<br /> }<br /><br />#这个类是订单明细,其中name字段是many2one,可以选择设置好的产品名称<br />class detail_class(osv.osv):<br /> _name = 'detail.class'<br /> _columns = {<br /> 'name': fields.many2one('other.class','产品'),<br /> 'qty':fields.char('数量'),<br /> 'detail_id': fields.many2one('main.class', '产品', ondelete='cascade', select=True, readonly=True), <br /> }<br /> _order = 'name'<br />detail_class()<br /><br />#这个类是订单类,包含一个明细项,用来显示这个订单中所包含的产品<br />class main_class()<br /> _columns={<br /> 'detail_line': fields.one2many('detail.class', 'detail_id', '产品'),<br /> }<br />main_class()<br /><br />#这里是xml代码,用来在main class界面顶部的搜索区域定义一个可以搜索产品明细的字段<br /> <record id="view_main_class_filter_extend" model="ir.ui.view"><br /> <field name="name">main.class.select1</field><br /> <field name="model">main.class</field><br /> <field name="type">search</field><br /> <field name="arch" type="xml"><br /> <field name="detail_line" string="产品"/> <br /> </field><br /></record><br />
如上述代码所示,最终在main class顶部搜索区域,出现一个编辑框,如果在其中输入“手机”,则可以搜索出所有包含“手机”这个产品明细的订单。这是一个比较简化的实现。
现在我还有一个进一步的需求,即我希望搜索区域出现的不是一个编辑框(char),而是一个下拉列表框(selection),而且这个下拉列表框中显示的是我在other.class中定义的产品名称。也就是说,我已经定义了诸如“手机,电脑,平板”等产品名称,而用户搜索的时候,直接可以在下拉框中选择,而不是手工输入“手机”,请问这样应该如何来做呢?