如何解决创建记录时获取当前用户奥多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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。