通过 fields.function 在 QWeb 报告上从数据库获取图像 - Odoo 8
Get images from db by fields.function on QWeb report - Odoo 8
我想为我的数据库中的任何图像打印通过 fields.function 获取的图像。
我正在尝试以下操作:
def _get_image(self, cr, uid, ids, name, args, context=None):
res = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
partner = self.pool.get('res.partner').browse(cr,uid,6,context=None).image
res[record_browse.id] = base64.encodestring(partner)
return res
_columns = {
'image': fields.function(_get_image, string="Image", type="binary"),
}
但在 qweb 报告中我得到:
File "/opt/*/openerp/addons/base/ir/ir_qweb.py", line 791, in value_to_html
raise ValueError("Non-image binary fields can not be converted to HTML")
ValueError: Non-image binary fields can not be converted to HTML
如果我以表格形式打印图像,一切都会很顺利。
任何帮助将不胜感激,在此先感谢。
试试这个代码:
def _get_image(self, cr, uid, ids, name, args, context=None):
res = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
partner = self.pool.get('res.partner').browse(cr,uid,6,context=None).image
res[record_browse.id] = base64.encodestring(partner)
return res
_columns = {
'image': fields.binary("Image"),
'image_x': fields.function(_get_image, string="Image", type="binary"),
}
或者试试这个代码
import base64
from osv import osv, fields
class my_class(osv.osv_memory):
def get_file(self, cr, uid, ids, field_name=None, arg=None, context=None):
result = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
f = open(record_browse.file_path)
result[record_browse.id] = base64.encodestring(f.read())
f.close()
return result
_name = 'my.class'
_columns = {
'file_path': fields.char('File Location', size=128),
'file': fields.function(get_file, method=True, store=False, type='binary', string="Download File"),
}
my_class()
我想为我的数据库中的任何图像打印通过 fields.function 获取的图像。
我正在尝试以下操作:
def _get_image(self, cr, uid, ids, name, args, context=None):
res = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
partner = self.pool.get('res.partner').browse(cr,uid,6,context=None).image
res[record_browse.id] = base64.encodestring(partner)
return res
_columns = {
'image': fields.function(_get_image, string="Image", type="binary"),
}
但在 qweb 报告中我得到:
File "/opt/*/openerp/addons/base/ir/ir_qweb.py", line 791, in value_to_html
raise ValueError("Non-image binary fields can not be converted to HTML")
ValueError: Non-image binary fields can not be converted to HTML
如果我以表格形式打印图像,一切都会很顺利。
任何帮助将不胜感激,在此先感谢。
试试这个代码:
def _get_image(self, cr, uid, ids, name, args, context=None):
res = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
partner = self.pool.get('res.partner').browse(cr,uid,6,context=None).image
res[record_browse.id] = base64.encodestring(partner)
return res
_columns = {
'image': fields.binary("Image"),
'image_x': fields.function(_get_image, string="Image", type="binary"),
}
或者试试这个代码
import base64
from osv import osv, fields
class my_class(osv.osv_memory):
def get_file(self, cr, uid, ids, field_name=None, arg=None, context=None):
result = dict.fromkeys(ids)
for record_browse in self.browse(cr, uid, ids):
f = open(record_browse.file_path)
result[record_browse.id] = base64.encodestring(f.read())
f.close()
return result
_name = 'my.class'
_columns = {
'file_path': fields.char('File Location', size=128),
'file': fields.function(get_file, method=True, store=False, type='binary', string="Download File"),
}
my_class()