gpt4 book ai didi

python - Odoo Onchange 方法不更新选择字段

转载 作者:行者123 更新时间:2023-12-01 08:41:22 24 4
gpt4 key购买 nike

我在员工和部门表单中有两个选择框字段。我想根据员工的department_id选择员工时自动选择部门。

这是我的 .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 View 文件:

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

它可以工作,但问题是这样的;当我选择员工时,部门选择框自动更新,它会触发但不会自动选择。单击后,选择框的列表将被填充。必须根据员工的选择自动选择。

最佳答案

您只需更改字段 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)]}}

关于python - Odoo Onchange 方法不更新选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com