как увеличить количество подписчиков в oe_chatter в odoo10

Любой может сказать, как увеличить количество подписчиков в чате.. я уже создал oe_chatter внутри формы, и он также отображается, но любой может сказать, если я добавлю много сотрудников в поля one2many, количество подписчиков также увеличится одновременно здесь подписчик один, но в поле one2many добавлено много сотрудников, а количество подписчиков также увеличивается вот мой код, который я еще пробовал.

Пи

_inherit = ['mail.thread','ir.needaction_mixin','utm.mixin']

xml

<div class="oe_chatter">
       <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
       <field name="message_ids" widget="mail_thread"/>
</div>  

person user_123    schedule 26.07.2017    source источник
comment
здесь последователь один, но имен сотрудников много. если имя сотрудника равно 4, то подписчиков также становится 4. как это закодировать   -  person user_123    schedule 26.07.2017
comment
Необходимо переопределить методы создания и записи, и вам нужно добавить идентификаторы подписчиков.   -  person Chavada Viki    schedule 27.07.2017
comment
как это можно сделать.. объясните на примере   -  person user_123    schedule 27.07.2017
comment
изменил мой код, проверьте его.   -  person Chavada Viki    schedule 28.07.2017


Ответы (1)


from odoo import fields,api,models

class your_class(models.Model):
    _name = "hr_work_shifts.hr_shifts"
    _inherit = ['mail.thread','ir.needaction_mixin','utm.mixin']

    @api.model 
    def create(self,vals): 
        res = super(hrWorkShifts,self).create(vals) 
        for emp in res.emp_name_ids:
            res.message_follower_ids = [(4,emp.emp_id.id)] 
        return res 

    emp_name_ids = fields.One2many('employee.list','emp_id',string='Employee Name')      

class employee_list(models.Model):
    _name="employee.list"

    emp_id = fields.Many2one('res.partner',string="Employee Name")
    date   = fields.Date('Date')

Поместите поле emp_name_ids в поле зрения, чтобы добавить имя и дату сотрудника.

person Chavada Viki    schedule 27.07.2017
comment
Я понял твою точку зрения, но все равно не работаю. вся болтовня используется здесь, но не добавляется в подписчик. - person user_123; 27.07.2017
comment
1. Мне нужен oe_chatter, который я получил, используя _inherit='mail.thread' в файле .py, а также включить div в файл .xml. используя приведенный выше код, который вы отредактировали. 2.После создания oe_chatter. хотите добавить подписчиков в соответствии с добавленным именем сотрудника. например, см. приведенный выше короткий экран, здесь имя сотрудника четыре (дэвид сэмпсон, роджер скотт, дэвид сэмпсон, дэвид сэмпсон), но после сохранения в подписчике отображается только 1 подписчик (т.е. только администратор) в чате. 3. Наконец, я хочу понять, что если есть 4 имени сотрудника, то после нажатия кнопки «Сохранить» количество подписчиков автоматически увеличивается до 4 (я хочу). - person user_123; 27.07.2017
comment
Спасибо за это описание. Я скоро вернусь к вам по этому поводу. - person Chavada Viki; 27.07.2017
comment
employee_ids - это поле one2many, которое является employee_name для приведенного выше короткого экрана..??? - person user_123; 27.07.2017
comment
Соответствует ли этот employee_ids one2many из res_partner или hr_employee? - person Chavada Viki; 27.07.2017
comment
я использую hr_shifts_line = fields.One2many('hr_work_shifts.hr_shifts_lines','hr_shifts_ids', string='Hr Work Shifts') и emp_name_ids = fields.Many2one('hr.employee',string='Имя сотрудника', обязательно = True, ) - person user_123; 27.07.2017
comment
Ох... вам нужен res.partner для выполнения этой операции. потому что message_follower_ids — это one2many из res.partner, а не hr.employee. - person Chavada Viki; 27.07.2017
comment
@api.model def create(self,vals): res = super(CLASSNAME,self).create(vals) res.message_follower_ids = [(6,0,res.partner.ids)] return res tdiz правильно??? - person user_123; 27.07.2017
comment
Нет нет. я имею в виду, что у вас должно быть поле one2many res.partner, а не hr.employee. emp_name_ids = fields.Many2one('res.partner',string='Имя сотрудника',required=True,) - person Chavada Viki; 27.07.2017
comment
если взять emp_name_ids = fields.Many2one('res.partner',string='Имя сотрудника',required=True,) то выдает ошибку: -DETAIL: Key (emp_name_ids)=(2) отсутствует в таблице res_partner. - person user_123; 28.07.2017
comment
Подождите секунду, какое поле вы используете для добавления нескольких имен сотрудников. - person Chavada Viki; 28.07.2017
comment
да. в представлении дерева сотрудников есть имя и дата сотрудника. если добавлено имя сотрудника, количество подписчиков увеличивается. и поле имени сотрудника: = emp_name_ids = fields.Many2one('hr.employee',string='Имя сотрудника', обязательное = True,) - person user_123; 28.07.2017
comment
Тогда это должно быть One2many. потому что мы собираемся добавить в него более одной записи. - person Chavada Viki; 28.07.2017
comment
@api.model def create(self,vals): res = super(hrWorkShifts,self).create(vals) res.message_follower_ids = [(6,0,res.partner.ids)] return res hr_shifts_line = fields.One2many( 'hr_work_shifts.hr_shifts_lines','hr_shifts_ids', string='Часовые рабочие смены'), hr_shifts_ids = fields.Many2one('hr_work_shifts.hr_shifts',string=Идентификаторы часовых смен) emp_name_ids = fields.One2many('res.partner',string = 'Имя сотрудника'): это вы хотите сказать правильно. - person user_123; 28.07.2017
comment
class hrWorkShifts(models.Model):_name = 'hr_work_shifts.hr_shifts'_inherit = ['mail.followers','mail.thread','ir.needaction_mixin'],@api.onchange('schedule') def _onchange_schedule(self ): для элемента в self.hr_shifts_line: current=self.env['hr.contract'].search([('employee_id','=',item.emp_name_ids.id)], current.write({'working_hours' :self.schedule.id}) @api.depends('hr_shifts_line.emp_name_ids') def _emp_name_ids(self): для элемента в self.hr_shifts_line: current=self.env['hr.contract'].search([(' employee_id','=',item.emp_name_ids.id)]),current.write({'working_hours':self.schedule.id}) - person user_123; 28.07.2017