微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Odoo14 中存储登录用户

如何解决如何在 Odoo14 中存储登录用户

我正在尝试使用计算方法将当前登录用户存储到 many2one 字段中。如果我在没有 store="True" 参数的情况下定义 Mnay2one 字段,它就可以正常工作。实际上,我需要保存它。

代码如下:

    def get_logged_user(self):
          for rec in self:
              print('inside get_logged_user---------------',rec.env.user.name)
              rec.logged_user_id = rec.env.user.id

    logged_user_id = fields.Many2one('res.users',string="Logged user",store=True,compute="get_logged_user")

解决方法

编辑:

如果您只需要控制 QWeb 视图中某个字段/按钮的可见性,您可以在没有专用字段的情况下进行存档。您可以使用 context.get('uid') 获取当前用户,如下所示:

<button ... invisible="context.get('uid') == assigned_user_id">

但是如果您需要将登录用户存储在一个字段中,您可以使用 default 而不是 compute。 像这样:

logged_user_id = fields.Many2one('res.users',string="Logged user",default=lambda self: self.env.user)

注意 lambda 函数的用法。

如果您确实需要将 compute 字段与 store=True 一起使用,您需要指定何时计算它。通过使用 api.depends 装饰器,您可以在 your_field 更改时触发它。

@api.depends('your_field')
def get_logged_user(self):

但是我会问一个问题,为什么您需要将登录用户存储在字段中?如果您能提供更多背景信息,也许我们可以建议不同的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。