odoo 附件转换html,attachment_widget

本文介绍8.0版本中两种API实现方式下,如何通过model字段设置进行控件的数据获取与设置操作,包括旧API(osv.osv)和新API(models.Model)的对比,并给出具体代码实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#控件使用说明

--model字段设置

--8.0版本老的api

class demo(osv.osv):

def _data_get(self, cr, uid, ids, name, arg, context=None):

if context is None:

context = {}

datas = []

att = self.pool.get('ir.attachment')

attIds = att.search(cr, uid, [('res_model','=',self._name),('res_id','=',ids[0])])

attObjs = att.browse(cr, uid, attIds)

for i in attObjs:

if i.file_type_icon!='webimage':

html = """

""" % {

'parentModel':self._name,

'parendId':ids[0],

'attId':i.id,

'attIcon':(i.file_type_icon or 'unknown'),

'filename':i.name

}

else:

html = """

""" % {

'parentModel':self._name,

'parendId':ids[0],

'attId':i.id,

'filename':i.name

}

datas.append({

'id':i.id,

'file_type_icon':i.file_type_icon,

'datas_fname':i.datas_fname,

'data':att._file_read(cr, uid, i.store_fname),

'html':html

})

return {ids[0]:datas}

def _data_set(self, cr, uid, id, name, value, arg, context=None):

return True

_columns = {

'datas': fields.function(_data_get, fnct_inv=_data_set, string='测试附件', type="binary", nodrop=True),

}

8.0版本新的api

from openerp import models, fields

class demo(models.Model):

_inherit = 'demo'

datas = fields.Binary(compute='_data_get', inverse='_inverse_display_name', string='测试附件')

@api.one

def _data_get(self):

context = self.env.context

if context is None:

context = {}

datas = []

att = self.env['ir.attachment']

attObjs = att.search([('res_model','=',self._name),('res_id','=',self.id)])

for i in attObjs:

if i.file_type_icon!='webimage':

html = """

""" % {

'parentModel':self._name,

'parendId':self.id,

'attId':i.id,

'attIcon':(i.file_type_icon or 'unknown'),

'filename':i.name

}

else:

html = """

""" % {

'parentModel':self._name,

'parendId':self.id,

'attId':i.id,

'filename':i.name

}

datas.append({

'id':i.id,

'file_type_icon':i.file_type_icon,

'datas_fname':i.datas_fname,

'data':att._file_read(i.store_fname),

'html':html

})

self.datas = datas

@api.one

def _inverse_display_name(self):

pass

xml控件使用说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值