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'该产品已选择「是否区分供应商」,供应商列表不允许为空')
重新上传,
问题解决 -
谢谢他享!!学习了!