我应该记录Odoo修改某个字段的用户名吗?

时间:2016-07-21 23:40:37

标签: openerp odoo-8 access-rules

.py文件: ...

namex = fields.Text()

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

...

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

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

2 个答案:

答案 0 :(得分:0)

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

  • create_date(datetime):创建记录时
  • create_uid(many2one):创建此记录的用户
  • write_date(datetime):上次更新记录
  • write_uid(many2one):上次用户更新了此记录

转到设置>技术>数据库结构>更多细节的模型。

答案 1 :(得分:0)

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