跳至內容
選單
此問題已被標幟
3 回覆
5830 瀏覽次數

I've added  track_visibility='onchange' on my fields and it doesn't work.

any idea ?

頭像
捨棄
最佳答案

Hi

By default, One2many fields changes won't update on chatter.


To display tracking of the One2many field in chatter, please refer to the code below.


class A(models.Model):
_name = "A.A"
_inherit = ['mail.thread', 'mail.activity.mixin']

name = fields.Char("Name")
b_lines = fields.One2many('B.B', 'a_id')


class B(models.Model):
_name = "B.B"
_inherit = ['mail.thread', 'mail.activity.mixin']

a_id = fields.Many2one('A.A')
name = fields.Char("Name",tracking=True)
#To Show tracking in chatter Add tracking=True

def write(self, vals):
super().write(vals)
if set(vals) & set(self._get_tracked_fields(vals)):
self._track_changes(self.a_id)

def _track_changes(self, field_to_track):
if self.message_ids:
message_id = field_to_track.message_post(
body=f'{self._description}: {self.display_name}').id
trackings = self.env['mail.tracking.value'].sudo().search(
[('mail_message_id', '=', self.message_ids[0].id)])
for tracking in trackings:
tracking.copy({'mail_message_id': message_id})


Hope it helps,

KIran K

頭像
捨棄

It works !!

But you forgot to return the super() of the write method.

最佳答案

Hi, 
Please try with "tracking=True"  instead of track_visibility .
Hope it will help you.
Thanks

頭像
捨棄
作者 最佳答案

Thank you Malay for your answer, but still the same problem

頭像
捨棄

HI,

Try to inherit "mail.thread" Model in your line model. Try to add _inherit = ['mail.thread'] line after your model description.

Just like this:

class YourCustomModel(models.Model):
_name = 'your.custom.model.name'
_inherit = ['mail.thread']
_description = 'Your Custom Model'

Hope it will help you.

相關帖文 回覆 瀏覽次數 活動
1
7月 25
2199
2
7月 25
7703
2
7月 25
4119
2
7月 25
3873
2
6月 25
2485