Openerp 如何在odoo版本7中将ir.attachment列表添加到合作伙伴视图
我希望能够轻松地在我的视图中将附件添加到Openerp 如何在odoo版本7中将ir.attachment列表添加到合作伙伴视图,openerp,openerp-7,odoo,Openerp,Openerp 7,Odoo,我希望能够轻松地在我的视图中将附件添加到res.partner模型。因此,我发现我可以使用大量字段将res.partner模型轻松扩展到ir.attachment _columns = { 'attachments': fields.many2many('ir.attachment', string="Attachments") } 现在,当我将此字段添加到视图中时,我看到了附件列表,但是这个简单的多个小部件有两个问题 我需要太多的点击才能附加新文件。首先,它打开了多个交叉表,我可以在
res.partner
模型。因此,我发现我可以使用大量字段将res.partner
模型轻松扩展到ir.attachment
_columns = {
'attachments': fields.many2many('ir.attachment', string="Attachments")
}
现在,当我将此字段添加到视图中时,我看到了附件列表,但是这个简单的多个小部件有两个问题
<field name="attachments"
context="{'default_res_model': 'res.partner', 'default_res_id': active_id, 'default_partner_id': active_id}"/>
不幸的是,这不起作用,因为active\u id=0
,而不是使用新的资源id激活它(这可能不存在?)
你对(1)如何获得即时上传视图和(2)如何将新记录的id放入上传视图有什么想法吗?我认为你应该使用(1) 一键式附件的小部件
<page string="Attachments">
<field name="attachments" widget="many2many_binary"/>
</page>
希望这个建议能对您有所帮助我找到了我一直在寻找的解决方案 安装
文档
插件会在ir.attachment
中添加一些额外字段,如partner\u id
。因此,我可以补充一点
'attachments': fields.one2many('ir.attachment', 'partner_id',string="Attachments")
到我的res.partner
分机
这已经允许我在没有额外视图的情况下添加附件。不幸的是,还有一个问题。由于不会填写res\u model
和res\u id
字段,因此附件在正常的res.partner
视图下不可用
为了解决这个问题,我必须用以下内容扩展ir.attachment
模型:
from openerp.osv.orm import Model
class document_file(Model):
_inherit = 'ir.attachment'
def create(self, cr, uid, vals, context=None):
if vals.get('partner_id', 0) != 0 and not (vals.get('res_id', False) and vals.get('res_model', False)):
vals['res_id'] = vals['partner_id']
vals['res_model'] = 'res.partner'
return super(document_file, self).create(cr, uid, vals, context)
def write(self, cr, uid, ids, vals, context=None):
if vals.get('partner_id', 0) != 0 and not (vals.get('res_id', False) and vals.get('res_model', False)):
vals['res_id'] = vals['partner_id']
vals['res_model'] = 'res.partner'
return super(document_file, self).write(cr, uid, ids, vals, context)
问题解决了!:) 尽管这看起来有些过分,但看起来这是一条路要走(即使是在奥多10中)。我看了一下当我们在一个线程中上传附件时会发生什么,这样附件就可以正确设置其res_模型,并且没有快速字段域或上下文。卷起袖子
from openerp.osv.orm import Model
class document_file(Model):
_inherit = 'ir.attachment'
def create(self, cr, uid, vals, context=None):
if vals.get('partner_id', 0) != 0 and not (vals.get('res_id', False) and vals.get('res_model', False)):
vals['res_id'] = vals['partner_id']
vals['res_model'] = 'res.partner'
return super(document_file, self).create(cr, uid, vals, context)
def write(self, cr, uid, ids, vals, context=None):
if vals.get('partner_id', 0) != 0 and not (vals.get('res_id', False) and vals.get('res_model', False)):
vals['res_id'] = vals['partner_id']
vals['res_model'] = 'res.partner'
return super(document_file, self).write(cr, uid, ids, vals, context)