计算附件的数量,并在openerp 7.0中的树视图中显示它

时间:2015-04-16 05:50:16

标签: attachment openerp-7

我使用以下代码在stock.picking.in对象中添加一个新列并更新其附件的数量(以树形视图显示附件的数量)。

class stock_picking(osv.osv):
_inherit = "stock.picking.in"
_name = 'stock.picking.in'
def count_attachments(self, cr, uid, ids, fields, arg, context):
    obj_attachment = self.pool.get('ir.attachment')
    for record in self:
        _logger.info("record now in tree view:"+record)
        record.attachment_count =0
        attachment_ids = obj_attachment.search([('res_model','=','stock.picking.in'),('res_id','=',record.id)]).ids
        if attachment_ids:
            record.attachment_count =len(attachment_ids)
    return record

_columns = {
            'attachment_count' :fields.function(count_attachments,method=True,string="Attachment Count" ,type='integer')
    }

stock_picking()

然后我将以下行添加到树视图中。

<field name="attachment_count">

在树视图中显示计数。

但是值没有得到更新,并且没有调用count_attachments。

感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试以下,

class stock_picking(osv.osv):
    _inherit = "stock.picking.in"
    _name = 'stock.picking.in'

    def count_attachments(self, cr, uid, ids, fields, arg, context=None):
        obj_attachment = self.pool.get('ir.attachment')
        res = {}
        for record in self:
            res[record.id] = 0
            _logger.info("record now in tree view:"+record)
            attachment_ids = obj_attachment.search([('res_model','=','stock.picking.in'),('res_id','=',record.id)]).ids
            if attachment_ids:
                res[record.id] = len(attachment_ids)
        return res

    _columns = {
                'attachment_count' :fields.function(count_attachments,method=True,string="Attachment Count" ,type='integer')
        }