コンテンツへスキップ
メニュー
この質問にフラグが付けられました
1 返信
3840 ビュー
Here's the challenge: 

I have added a custom field to the mail.message model.
I want to expose that field in the message thread. I can change the way the thread looks but the value of the new field always comes empty.

I can make the values to be shown by directly editing the /mail/static/src/models/message.js in two places:
1) add...
if ('read_by' in data) {
data2.read_by = data.read_by;
}

inside convertData(data)

2) Add...
read_by = attr();

inside "fields"


Obviously, I can't edit the base code and I need to apply these changes in my own code. How?!


I've tried the following (it's not working):


odoo.define('MY_MODULE.message', function (require) {
"use strict";

const { Message } = require('mail.models');
const Registries = require('mail.Registries');

const MessageFields = (Message) => class MessageFields extends Message {

convertData(data) {
super.convertData(data);
if ('read_by' in data) {
data2.read_by = data.read_by;
}
}

fields['read_by'] = attr();
}
Registries.Model.extend(Message, MessageFields);
});


Can anyone, please, tell me how to achieve this?
アバター
破棄
著作者 最善の回答
/** @odoo-module **/

import { registerPatch } from '@mail/model/model_core';
import { attr } from '@mail/model/model_field';

registerPatch({
name: 'Message',
modelMethods: {
convertData(data) {
const data2 = this._super(data);
if ('read_by' in data) {
data2.read_by = data.read_by;
}
return data2;
},
},
fields: {
read_by: attr(),
},
});

アバター
破棄
関連投稿 返信 ビュー 活動
1
4月 24
1327
0
1月 24
1062
1
9月 23
2317
2
4月 23
4339
2
1月 23
6868