Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

关于fields.function显示网络图片的问题



  • 我的目标是希望通过fields.function来获取外部网站图片显示到OE上,在开发过程中有以下问题:<br /><br />1. 我已经使用urllib2获取到了网络的图片opener.open('http://www.sajolab.com/sajolab.jpg'),然后使用read()将图片转换为Binary类型,但是在添加Module时却报 in ustr raise UnicodeError('unable de to convert %r' % (orig,))错误,相信应该是转码问题,请问各位大神,我在使用fields.function转码应该如何处理才可以正确显示??<br /><br />附上Python代码:<br />from osv import osv, fields<br />import urllib2<br />import netsvc<br />class product_product(osv.osv):<br />    _name = 'product.product'<br />    _inherit = 'product.product'<br />    _description = 'Product'<br /> <br />    def _get_image(self, cursor, user, ids, name, arg, context=None):<br />        image = {}<br />        logger = netsvc.Logger()<br />        opener = urllib2.build_opener()<br />        for id in ids:<br />            logger.notifyChannel('addon:' + self._name, netsvc.LOG_INFO, 'id:%s' % (id))<br />            image[id] = opener.open('http://www.sajolab.com/sajolab.jpg').read()<br />        logger.notifyChannel('addon:' + self._name, netsvc.LOG_INFO, 'image:%s' % (image))<br />        return image<br /> <br />    _columns = { 'image' : fields.function(_get_image, method=True, string='Product Image', type='binary', store=True), }<br /> <br />product_product()



  • 问题已解决<br />使用basse64转换编码. 😉 ;D<br />image[id] = base64.encodestring(opener.open('http://www.sajolab.com/sajolab.jpg').read())<br />



  • 恭喜... 给贴子加个 标签吧.. 或者后面需要了解的人会检索到.