Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
3 Odpowiedzi
5820 Widoki

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

any idea ?

Awatar
Odrzuć
Najlepsza odpowiedź

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

Awatar
Odrzuć

It works !!

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

Najlepsza odpowiedź

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

Awatar
Odrzuć
Autor Najlepsza odpowiedź

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

Awatar
Odrzuć

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.

Powiązane posty Odpowiedzi Widoki Czynność
1
lip 25
2178
2
lip 25
7681
2
lip 25
4102
2
lip 25
3846
2
cze 25
2458