python - 为什么 api.depends 不能在非编辑模式下使用 message_follower_ids 字段?如何修复它?

标签 python python-2.7 odoo odoo-10 odoo-view

当文档中有关注者并且他们不是 Odoo 用户时,我想显示一条消息。因此,我创建了两个计算字段,一个用于消息,另一个用于检查是否应显示消息。

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    @api.multi
    @api.depends('message_follower_ids')
    def _compute_show_warning_msg(self):
        partner_ids = self.env['res.users'].search([])\
            .mapped('partner_id').mapped('id')
        for record in self:
            msg = _("""\nDocument contains no user followers.\n""")
            for follower in record.message_follower_ids:
                if follower.partner_id.id not in partner_ids:
                    record.show_warning_msg = True
                    record.warning_msg = msg

    show_warning_msg = fields.Boolean(
        compute='_compute_show_warning_msg',
        string='Show warning message',
    )

    warning_msg = fields.Text(
        compute='_compute_show_warning_msg',
        string='Warning message',
    )

但是当表单未处于编辑模式并且我添加或删除关注者时,不会触发计算方法。所以我必须按下“编辑”按钮和“保存”来触发该方法。

我尝试在follower表的create和unlink方法上执行compute方法,但是表单 View 没有刷新

有没有办法触发计算字段并刷新表单以显示消息?

有任何解决方法或修复吗?

最佳答案

一个可能的解决方案,我将此代码添加到表单 View 中:

<field name="message_follower_ids" position="attributes">
    <attribute name="class">oe_edit_only</attribute>
</field>

关于python - 为什么 api.depends 不能在非编辑模式下使用 message_follower_ids 字段?如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49180408/

相关文章:

python - smtplib、unicode 和 OpenERP 核心的问题

python - 在 Windows 中将希伯来语文件名作为命令行参数传递

python - 如果它扩展了具有相同方法名称的两个类,哪个方法调用子类

multithreading - 什么是Odoo中的 "worker"?

python - 在Python中查找文本中是否存在单词的逻辑

十六进制到十六进制的 Python 字符串(带前导零)

python - 如何在 Python、Odoo 中附加对象和字典值?

python - 使用 pip、Mac OSX 安装 tensorflow 的文件夹在哪里?

python - 如何在 Spotify、Python API 中工作?

python - 将 Python 嵌套字典转换为 Numpy 数组