javascript - 创建记录时获取当前用户。奥多 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,
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)]},
)
我该怎么做 ?谢谢。
解决方案
更改默认代码
从
默认=lambda 自我:self.env.uid,
至
默认 = lambda 自我:self.env.user,
编辑-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
推荐阅读
- hl7-fhir - 如何在 FHIR 中索引日期?
- vbscript - 删除所有用户配置文件的桌面内容
- python - 使用装饰器函数比较执行时间
- java - 如何在此代码中使用 .trim() 方法?
- android - AsyncTask 中的 Android 设置复选框 setChecked() 方法给出错误?
- go - 无法为 SAML 响应创建正确的签名
- unity3d - Oculus Quest - Unity 应用程序保持活跃
- java - 邮递员请求不正确 - 字符串错误
- javascript - 单击转到页面的某个部分时如何获取按钮?
- sql - SQL Server 中带负数的 POWER 函数