【问题标题】:Shall I record the user name who modify a certain field by Odoo?Odoo修改某个字段的用户名要记录吗?
【发布时间】:2016-07-21 23:40:37
【问题描述】:

.py 文件: ….

namex=fields.Text()

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

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

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

【问题讨论】:

    标签: openerp odoo-8 access-rules


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的信息;我从这个回复中学到了很多。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2014-05-27
      • 2017-08-05
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多