Odoo:根据部门标识,one2many域输入员工

2024-06-16 13:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

从这张图片here

当我点击addnewitem时,我希望显示的员工列表是employees 从所选部门来看,在pict中是“IT”部门。iam使用odoo v8

我在o2m领域尝试过:

class overtime(models.Model):
    _name = 'overtime.overtime'

    department_id = fields.Many2one('hr.department', string='Department', readonly=True, states={'draft': [('readonly', False)]})
    employee_ids = fields.One2many('overtime.overtime_details', 'overtime_id', string="Employee", 
                                domain="[('hr.employee.department_id', '=', department_id)]")


class overtime_details(models.Model):
    _name='overtime.overtime_details'

    nik = fields.Char('NIK', size=250, required=True)
    overtime_id = fields.Many2one('overtime.overtime', string="Overtime", ondelete='cascade')
    job_id = fields.Many2one('hr.job', string="Position")
    employee_id = fields.Many2one('hr.employee', "Employee", required=True, select=True)

得到了这样的错误:

^{pr2}$

以下是xml:

   <record id="overtime_form1" model="ir.ui.view">
            <field name="name">overtime_form1</field>
            <field name="model">overtime.overtime</field>
            <field name="arch" type="xml">
                <form string="Overtime Request Form">
                  <sheet>
                    <div class="oe_title">
                        <label for="code" class="oe_edit_only"
                            string="Overtime Code" />
                        <h1>
                            <field name="code" />
                        </h1>
                    </div>
                    <group>
                        <field name="department_id"/>
                        <label string="Duration"/>
                        <div>
                            <group col="5">
                                <field name="start_date" class="oe_inline"/>
                                <label string="-" class="oe_inline"/>
                                <field name="end_date" class="oe_inline"/>
                            </group>
                            </div>
                            <field name="total_overtime"/>
                            <field name="overtime_bonus"/>
                            <field name="reason"/>  
                        </group>
                        <notebook>
                            <page string="Employees">
                                <field name="employee_ids" >
                                    <tree string="Employees" editable="bottom">
                                        <field name="nik"/>
                                        <field name="employee_id"/>
                                        <field name="job_id"/>
                                    </tree>
                                </field>
                            </page>
                        </notebook>
                    </sheet>
                </form>
            </field>
        </record>

感谢之前:)


Tags: namedividtruefieldfieldsstringgroup
3条回答

首先,您需要向overtime.overtime_details模型添加一个相关字段来标识{},如下所示:

department_id = fields.Many2one(related="overtime_id.department_id", store=False)

然后,在xml视图中,现在可以通过employee_ids字段树中的department_id来过滤employee_id列表:

^{pr2}$

您可以使用domain过滤employee_id中的员工:

<notebook>
    <page string="Employees">
        <field name="employee_ids" >
            <tree string="Employees" editable="bottom">
                <field name="nik"/>
                <field name="employee_id" domain="[('department_id', '=', department_id)]" />
                <field name="job_id"/>
            </tree>
        </field>
    </page>
</notebook>

你可以用父部门\u id。在

<notebook>
<page string="Employees">
    <field name="employee_ids" >
        <tree string="Employees" editable="bottom">
            <field name="nik"/>
            <field name="employee_id" domain="[('department_id', '=',parent.department_id)]" />
            <field name="job_id"/>
        </tree>
    </field>
</page>

这可能对你有帮助。在

相关问题 更多 >