OE7.0中,如何取产品中供应商的个数
- 
在修改产品模块中,有一个业务,就是该产品中,追加了 是否区分供应商 的字段,为bit类型,假如沟上该字段,则供应商列表则不允许为空 
 添加字段及如何摆放该字段的位置,则不细说了,使用xpath定位,并追加即可
 下面讲一下如何判断该字段是否沟选 ,假如沟上,再判定一次供应商列表是否为空
 经Ccode大神教导,要做到这一步,则需要重写write(假设我们处于修改的情况下),
 此时,所有修改的内容都会在vals中,没修改的则不在该数组中
 我先定义一个
 def write(self,cr,uid,ids,vals,context=None):
 val={} #定义一个val来接收是否区分供应商 的沟有没有打上
 supplierList=[] #供应商列表
 IntCount={} #供应商列表的个数
 if 'bitSupplier' in vals: #假如该字段存在vals中
 val=vals['bitSupplier'] #读取bitSupplier的值
 if val==True: #假如该值被打上沟,即为 True的状态,反之则为False
 if 'seller_ids' in vals:
 supplierList=vals['seller_ids']
 IntCount=len(supplierList) #供应商列表个数,重庆-mrshelly(49812643) 提示使用len,我原来使用Count出错,这点要注意,虽然现在也没明白,先记下来先
 if IntCount<=0: #
 warning={
 'title':(u'提示'),
 'message':val
 }
 raise osv.except_osv(u'系统提示','提示内容(自己设置)')
 else: #假如都符合条件,则调用product中的write函数,不过我没写对,
 
 
 #return super(product_template,self).write(self,cr,uid,ids,vals,context=context); #这句我没写对,还在修正中,请注意
- 
顺便提一下今天的错误 
 环境:本机系统:Win7 虚拟机:ubunt 服务器:ubunt 10.04桌面版
 raise osv.except_osv(u'系统提示','提示内容(自己设置)')
 如果这样写,上传到服务器中,运行时是提示错误的,
 提示:
 ascii codes can.t decode byte oxe80:ordinal not in range(128)
 我原本以为是我的本机虚拟机的是极点五笔输入法,而服务器的ubunt 中没有装有,于是就在服务器的ubunt中装了,结果问题依旧
 后来求助重庆-mrshelly(49812643)
 总监眼神依然犀利
 指出原因是:在raise中,涉及到字符串,都要在前面加入 u
 应改为:
 raise osv.except_osv(u'错误提示',u'该产品已选择「是否区分供应商」,供应商列表不允许为空')
 重新上传,
 问题解决
- 
谢谢他享!!学习了! 

