0

.py 文件:……

namex=fields.Text()

moifier=fields.Many2one('res.users', string=”Modifier”)

…</p>

当部分用户修改“namex”时,他/她的名字会自动记录在“modifier”字段中;我应该制作什么代码?我尝试“onchange/depends”,但失败了;也许修饰符可以是“文本字段/字符字段”?

另外,我应该设置“access_rule”来设置用户只看到他/她自己组中的成员创建的记录吗?

4

2 回答 2

1

Odoo 已经为您准备好了。每个模型都有这些字段,这些字段会在您每次创建或编写时自动创建和更新:

  • create_date (datetime): 创建记录的时间
  • create_uid (many2one): 创建此记录的用户
  • write_date (datetime): 最后一次更新记录
  • write_uid (many2one): 最后一个用户更新了这条记录

转到设置 > 技术 > 数据库结构 > 模型了解更多详细信息。

于 2016-07-22T03:25:19.050 回答
1

虽然 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 装饰器。

于 2016-07-22T06:40:25.057 回答