我现在正在为OpenERP 7中的实验室测试目的创建一个自定义模块。用户需要在此处输入他们的实验室测试组件和结果。
现在我有了一个名为" Reason For Changes"的字段。我想知道如何将此内容的输入记录为"记录注释"通过mail.thread显示在底部的消息?
步骤将是:
变更原因(ROC)为必填字段
我的其他字段中的任何更改都会调用我的onchange方法来清除ROC字段的内容。
如果用户更改了某些内容但没有在ROC字段中输入文本,则单击“保存”,出现错误消息"请输入更改原因"会弹出来的。这将禁止用户保存此内容。
如果用户更改了某些内容并将文本输入到ROC字段,然后保存,则ROC字段内容将在底部创建为消息(例如"记录注释")参考和历史日志记录。
我的问题是如何实现第3步和第4步?非常感谢您的帮助
答案 0 :(得分:0)
有两种可能性,但使用过的模型必须继承email.thread
!但我想这是继承,因为你写了一些关于聊天消息的内容。:
roc = fields.Char(string="Reason For Changes", track_visibility="on_change")
_columns = {
roc: fields.char(string="Reason For Changes", track_visibility="on_change"),
}
email.thread
带来了一些简单而有用的方法。其中之一是message_post()。覆盖模型的write(),如下所示(新/旧API):@api.multi
def write(self, vals):
res = super(YourModel, self).write(vals)
if 'roc' in vals:
for your_model_record in self:
your_model_record.message_post(vals.get('roc'))
return res
def write(self, cr, uid, ids, vals, context=None):
res = super(YourModel, self).write(vals)
if 'roc' in vals:
for your_model_record_id in ids:
self.message_post(cr, uid, your_model_record_id, vals.get('roc')), context=context)
return res
答案 1 :(得分:0)
我希望我的问题也可以帮助其他人。关注将是现在对我有用的完整代码示例:
def write(self, cr, uid, ids, vals, context=None):
res = super(test_lab, self).write(cr, uid, ids, vals, context=context)
if 'ROC' in vals:
for lab in self.browse(cr, uid, ids, context=context):
self.message_post(cr,uid,[lab.id],vals.get('ROC'),context=context)
return res
希望这有帮助。谢谢!