创建记录时获取当前用户奥多14

问题描述

我在销售点有一个与 res.users 相关的字段 many2one,如下所示:

  user_id = fields.Many2one(
        comodel_name='res.users',string='Responsible',help="Person who uses the cash register. It can be a reliever,a student or an interim employee.",default=lambda self: self.env.uid,states={'done': [('readonly',True)],'invoiced': [('readonly',True)]},)

<field string="User" name="user_id"/>

我想将其设置为“必需”和空字段,但是在保存记录时,如果“user_id”的值为空,则获取当前用户。 我尝试使用此代码,但所需的值是阻塞的:

@api.model
    def _default_user_id(self):
        if not self.user_id:
            self.user_id = self.env.uid
        else:
            self.user_id = False


    user_id = fields.Many2one(
        comodel_name='res.users',required=True,default=_default_user_id,)

我该怎么做? 谢谢。

解决方法

更改您的默认代码

来自

default=lambda self: self.env.uid,

default=lambda self: self.env.user,

EDIT-1

在这种情况下,我们需要覆盖 create() 方法而不是在默认函数中编写逻辑。使用以下代码,它会在记录创建时检查 user_id 字段,如果记录没有 user_id,它将设置当前登录的用户。

@api.model
def create(self,vals):
    if "user_id" not in vals:
        vals.update({"user_id": self.env.user})
    record = super().create(vals)
    return record

EDIT-2

在这种情况下,我们需要写下默认函数。

def _default_user_id(self):
    if not self.user_id:
        return self.env.user
    return False