Odoo是否需要记录修改某个字段的用户名?
Shall I record the user name who modify a certain field by Odoo?
.py 文件:
....
namex=fields.Text()
moifier=fields.Many2one(‘res.users’, string=”Modifier”)
…
当某些用户修改“namex”时,his/her name 应该自动记录在“modifier”字段中;我应该制作什么代码?我尝试“onchange/depends”,但失败了;也许修饰符可以是“文本字段/字符字段”?
另外,我要不要设置"access_rule",让用户只能看到his/her自己组的成员创建的记录?
Odoo 已经为您准备好了。每个模型都有那些字段,它们会在您每次创建或写入时自动创建和更新:
- create_date(日期时间):创建记录的时间
- create_uid (many2one): 创建此记录的用户
- write_date (datetime): 上次更新记录的时间
- write_uid (many2one): 最后一个用户更新了这条记录
转到“设置”>“技术”>“数据库结构”>“模型”了解更多详细信息。
虽然 Odoo 会为您跟踪最后一个修改记录的用户,但不会保留每个字段的修改器。在许多情况下,我可以看到这种功能的好处。
要针对特定模型执行此操作,一种可能性是重新定义该模型的 write
方法。在您的 .py 文件中,您可能想要添加如下内容:
@api.model
def write(self):
if self.namex in values:
values.update({'modifier': uid})
super().write(cr, uid, ids, values, context)
另一种更灵活的方法是使用@onchange 装饰器:
@onchange('your_sensible_field_name'):
def set_modifier(self):
self.modifer = self.env.user
您可能还想看一下@depends 装饰器。
.py 文件: ....
namex=fields.Text()
moifier=fields.Many2one(‘res.users’, string=”Modifier”)
…
当某些用户修改“namex”时,his/her name 应该自动记录在“modifier”字段中;我应该制作什么代码?我尝试“onchange/depends”,但失败了;也许修饰符可以是“文本字段/字符字段”?
另外,我要不要设置"access_rule",让用户只能看到his/her自己组的成员创建的记录?
Odoo 已经为您准备好了。每个模型都有那些字段,它们会在您每次创建或写入时自动创建和更新:
- create_date(日期时间):创建记录的时间
- create_uid (many2one): 创建此记录的用户
- write_date (datetime): 上次更新记录的时间
- write_uid (many2one): 最后一个用户更新了这条记录
转到“设置”>“技术”>“数据库结构”>“模型”了解更多详细信息。
虽然 Odoo 会为您跟踪最后一个修改记录的用户,但不会保留每个字段的修改器。在许多情况下,我可以看到这种功能的好处。
要针对特定模型执行此操作,一种可能性是重新定义该模型的 write
方法。在您的 .py 文件中,您可能想要添加如下内容:
@api.model
def write(self):
if self.namex in values:
values.update({'modifier': uid})
super().write(cr, uid, ids, values, context)
另一种更灵活的方法是使用@onchange 装饰器:
@onchange('your_sensible_field_name'):
def set_modifier(self):
self.modifer = self.env.user
您可能还想看一下@depends 装饰器。