如何在OpenERP中使用下拉字段?
我一直在尝试在我的openerp模块中使用下拉菜单列表。我有一个叫做many2one的字段,里面包含了分类。这一字段关联了一个onchange函数。这个onchange函数会返回新的值给第二个字段。现在一切都正常,但我想在第二个字段中使用一个下拉菜单,这样我就可以从中选择值。我的Python代码如下:
class deg_form(osv.osv):
_name = "deg.form"
_columns = {
'categ1':fields.many2one('product.category','Parent Category',required=True),
'my_products':fields.char('Product',size=64)
}
def Product_Category_OnChange(self,cr,uid,ids,categ1):
pro_id=[]
cr.execute('select id,name from product_template where categ_id in (select id from product_category where parent_id in (select id from product_category where parent_id='+str(categ1)+')) union select id,name from product_template where categ_id in (select id from product_category where parent_id='+str(categ1)+') union select id,name from product_template where categ_id='+str(categ1))
res = cr.fetchall()
for pid,name in res:
pro_id.append((pid,name))
return {'value':{'my_products':pro_id}}
这是我的xml:
<field name="categ1" on_change="Product_Category_OnChange(categ1)" />
我的值已经被过滤,但在字段中显示时都是用逗号分开的。我希望它们能以下拉菜单的形式列出。我使用了many2one,但值似乎没有被过滤。因此,我在实现下拉列表视图时遇到了问题。请帮帮我。
谢谢!
1 个回答
3
my_products
应该是一个多对一的字段,跟 product.product
有关系。
'my_products':fields.many2one('product.product',string="Product")
如果你想通过选择类别来过滤产品列表,你需要为 my_products
返回一个新的筛选条件(请使用 ORM 方法,而不是直接查询):
def Product_Category_OnChange(self,cr,uid,ids,categ1):
product_obj = self.pool.get('product.product')
product_ids = product_obj.search(cr, uid, [('cat_id','=',categ1)]) #maybe cat_id is wrong field name
return {'domain':{'my_products':[('id','in',product_ids)]}}
:-)