OpenERP 7-在“中创建自动日志消息”;记录一个注释;字段作为历史日志记录

OpenERP 7-在“中创建自动日志消息”;记录一个注释;字段作为历史日志记录,openerp,openerp-7,openerp-8,Openerp,Openerp 7,Openerp 8,我现在正在OpenERP7中创建一个用于实验室测试的自定义模块。用户需要在此处输入实验室测试组件和结果 现在我有一个叫做“变更原因”的字段。我想知道如何通过mail.thread将此内容的输入记录为“loga note”消息,并显示在底部 这一步骤将是: 更改原因(ROC)作为必填字段 我的其他字段中的任何更改都将调用我的onchange方法来清除ROC字段的内容 如果用户未在ROC字段中输入文本就更改了某些内容,然后单击保存,将弹出错误消息“请输入更改原因”。这将禁止用户保存此文件 如果用户更

我现在正在OpenERP7中创建一个用于实验室测试的自定义模块。用户需要在此处输入实验室测试组件和结果

现在我有一个叫做“变更原因”的字段。我想知道如何通过mail.thread将此内容的输入记录为“loga note”消息,并显示在底部

这一步骤将是:

  • 更改原因(ROC)作为必填字段

  • 我的其他字段中的任何更改都将调用我的onchange方法来清除ROC字段的内容

  • 如果用户未在ROC字段中输入文本就更改了某些内容,然后单击保存,将弹出错误消息“请输入更改原因”。这将禁止用户保存此文件

  • 如果用户更改了某些内容并输入文本到ROC字段,然后保存,ROC字段内容将在底部创建为消息(如“记录注释”),作为参考和历史日志记录


  • 我的问题是如何实现步骤3和步骤4?非常感谢您的帮助

    有两种可能,但使用的模型必须继承
    email.thread
    !但我想这是继承,因为你写了一些关于聊天信息的东西

  • 使用奥多(前OpenERP)自动跟踪系统。您只需在字段定义中添加参数track_visibility,如(新API,旧API)
  • roc=fields.Char(string=“变更原因”,track\u visibility=“on\u变更”)
    _列={
    roc:fields.char(string=“变更原因”,track\u visibility=“on\u变更”),
    }
    
  • 在“自己写”上发布消息
    email.thread
    提供了一些简单但有用的方法。其中之一是message_post()。重写模型的write(),如下所示(新/旧API):
  • @api.multi
    def写入(自身、VAL):
    res=super(你的模型,自我)。write(VAL)
    如果VAL中的“roc”:
    对于您在self中的_model_记录:
    您的\u model\u record.message\u post(vals.get('roc'))
    返回res
    def写入(自身、cr、uid、ID、VAL、上下文=无):
    res=super(你的模型,自我)。write(VAL)
    如果VAL中的“roc”:
    对于id中的\u模型\u记录\u id:
    self.message\u post(cr、uid、您的\u model\u record\u id、vals.get('roc')),context=context)
    返回res
    
    有两种可能,但使用的模型必须继承
    email.thread
    !但我想这是继承,因为你写了一些关于聊天信息的东西

  • 使用奥多(前OpenERP)自动跟踪系统。您只需在字段定义中添加参数track_visibility,如(新API,旧API)
  • roc=fields.Char(string=“变更原因”,track\u visibility=“on\u变更”)
    _列={
    roc:fields.char(string=“变更原因”,track\u visibility=“on\u变更”),
    }
    
  • 在“自己写”上发布消息
    email.thread
    提供了一些简单但有用的方法。其中之一是message_post()。重写模型的write(),如下所示(新/旧API):
  • @api.multi
    def写入(自身、VAL):
    res=super(你的模型,自我)。write(VAL)
    如果VAL中的“roc”:
    对于您在self中的_model_记录:
    您的\u model\u record.message\u post(vals.get('roc'))
    返回res
    def写入(自身、cr、uid、ID、VAL、上下文=无):
    res=super(你的模型,自我)。write(VAL)
    如果VAL中的“roc”:
    对于id中的\u模型\u记录\u id:
    self.message\u post(cr、uid、您的\u model\u record\u id、vals.get('roc')),context=context)
    返回res
    
    我希望我的问题也能帮助其他人。下面是我现在正在使用的完整代码示例:

    def写入(self、cr、uid、id、vals、context=None):
    res=super(test\u lab,self).写入(cr,uid,ids,VAL,context=context)
    如果VAL中的“ROC”:
    对于self.browse中的实验室(cr、uid、ID、context=context):
    self.message_post(cr,uid,[lab.id],vals.get('ROC'),context=context)
    返回res
    

    希望这是有帮助的。谢谢

    我希望我的问题也能帮助其他人。下面是我现在正在使用的完整代码示例:

    def写入(self、cr、uid、id、vals、context=None):
    res=super(test\u lab,self).写入(cr,uid,ids,VAL,context=context)
    如果VAL中的“ROC”:
    对于self.browse中的实验室(cr、uid、ID、context=context):
    self.message_post(cr,uid,[lab.id],vals.get('ROC'),context=context)
    返回res
    

    希望这是有帮助的。谢谢

    非常感谢你。目前我面临的错误是:“res=super('test.lab',self.)。write(vals)TypeError:必须是type,而不是str”知道问题是什么以及如何解决它吗?super的第一个参数必须是本例中的类名。有关更多信息,请访问谢谢@CZoellner。它正在工作!你帮了大忙!非常感谢你。目前我面临的错误是:“res=super('test.lab',self.)。write(vals)TypeError:必须是type,而不是str”知道问题是什么以及如何解决它吗?super的第一个参数必须是本例中的类名。有关更多信息,请访问谢谢@CZoellner。它正在工作!你帮了大忙!