Метод Odoo Onchange не обновляет поле выбора - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть два поля выбора в форме сотрудник и отдел.Я хочу выбрать отдел автоматически, когда выбираю сотрудника в соответствии с идентификатором отдела.

Вот мой код .py (Odoo 11)

class HrExpenseExpense(models.Model):
_inherit = "hr.expense"

department_expense_group = fields.Selection(
    string='Department Expense Group',
    related='department_id.expense_group',
    readonly=True,
)
department_id = fields.Many2one('hr.department', string='Department',
                                states={'post': [('readonly', True)], 'done': [('readonly', True)]})

@api.onchange('employee_id')
def onchange_employee_id(self):
    department_id = [x.id for x in self.employee_id.department_id]
    return {'domain': {'department_id': [('id', 'in', department_id)]}}

И просмотр XML-файла:

 <xpath expr="//field[@name='employee_id']" position="after">
   <field name="department_expense_group" invisible="1" />
   <field name="department_id" invisible="0"/>
 </xpath>

Это работает, но проблема в этом;Когда я выбираю сотрудника, окно выбора отдела обновляется автоматически, оно срабатывает, но не выбирается автоматически.Заполнение списка Selectbox после того, как я нажму на него.Он должен быть выбран автоматически в соответствии с выбором сотрудника.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы только меняете фильтр поля department_id, и вам нужно установить его на себя, чтобы выполнить ваше требование.И вы зацикливаетесь на одном поле записи (employee_id.department_id), которое здесь немного преувеличено.

@api.onchange('employee_id')
def onchange_employee_id(self):
    if self.employee_id:
        department = self.employee_id.department_id
        # set department
        self.department_id = department
        # don't allow other departments
        return {'domain': {'department_id': [('id', '=', department.id)]}}
    else:
        # empty department
        self.department_id = False
        # allow other departments
        return {'domain': {'department_id': [('id', '!=', False)]}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...