Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
3 Trả lời
5894 Lượt xem

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

any idea ?

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ

It works !!

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

Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

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

Ảnh đại diện
Huỷ bỏ

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.

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 7 25
2321
2
thg 7 25
7798
2
thg 7 25
4200
2
thg 7 25
3987
2
thg 6 25
2586