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

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

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

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

[已解决] 获取Followers的User id



  • 获取当前单据的Followers的id,使用self的什么属性直接可以获取到。



  • @hui
    获取mail.follower对象self.message_follower_ids
    或者下面的也是获取的mail.follower对象

    followers = self.env['mail.followers'].sudo().search([
                ('res_model', '=', self._name),
                ('res_id', '=', self.id)])
    

    但是followers并不一定是users

    疑问:不知道mail.follower中的partner_id是什么作用,这个res_id应该是当前单据的id吧。

    获取Followers中的User 好像没有一步到位的方法,官方也没有提供对应的方法或者属性可用。只能自己写了:

    follower_partner_ids = self.message_follower_ids.mapped('partner_id').ids
            for partner_id in follower_partner_ids:
                if partner_id:
                    follower_users_ids = self.env['res.users'].search([('partner_id', '=', partner_id)]).ids
                    
    

  • 管理员

        # Note. There is no integrity check on model names for performance reasons.
        # However, followers of unlinked models are deleted by models themselves
        # (see 'ir.model' inheritance).
        res_model = fields.Char(
            'Related Document Model Name', required=True, index=True)
        res_id = fields.Integer(
            'Related Document ID', index=True, help='Id of the followed resource')
        partner_id = fields.Many2one(
            'res.partner', string='Related Partner', ondelete='cascade', index=True)
        channel_id = fields.Many2one(
            'mail.channel', string='Listener', ondelete='cascade', index=True)
        subtype_ids = fields.Many2many(
            'mail.message.subtype', string='Subtype',
            help="Message subtypes followed, meaning subtypes that will be pushed onto the user's Wall.")
    

    mail.follower关联res.partner,因为关注者不一定是系统的登录用户,他们只需要通过邮件收到对应的信息就可以了。
    res_id就是关联的单据id。
    res_model是关联的单据模型。



  • @joshua
    懂了,谢谢。实际应该从我写的例子里面就可以看出来啦。