创建记录时获取当前用户.Odoo 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"/>

我想将其设置为"required"和空字段,但在保存记录时,如果"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,
help="Person who uses the cash register. It can be a reliever, a student or an interim employee.",
default=_default_user_id,
states={'done': [('readonly', True)], 'invoiced': [('readonly', True)]},
)

我该怎么做?谢谢

更改默认代码

来自

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

编辑-2

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

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

相关内容

  • 没有找到相关文章

最新更新