3

我在 odoo 9 中为员工扩展模块。每个员工都有孩子。这是我的模型:

class Employee(models.Model):
    _name = 'hr.employee'
    _inherit = 'hr.employee'

    children_ids = fields.One2many('my_module', 'employee_id', string="Children")


class Child(models.Model):
    _name = 'my_module'

    name = fields.Char(required=True, string='Name')

    birthday = fields.Date(required=True, string='Birthday')

    employee_id = fields.Many2one('hr.employee', ondelete='cascade', string="Employee")

在此处输入图像描述

如何配置按生日搜索?例如,我想在搜索中设置生日日期(或日期间隔),系统必须从搜索中显示所有有生日孩子的员工。

在此处输入图像描述

这是我的搜索视图(这按孩子的名字工作):

<record id="view_urspectr_employee_filter" model="ir.ui.view">
    <field name="name">Employees</field>
    <field name="model">hr.employee</field>
    <field name="inherit_id" ref="hr.view_employee_filter" />
    <field name="arch" type="xml">
        <search position="inside">
            <field name="children_ids"/>
        </search>
    </field>
</record>

我在模块帐户(../addons/account/views/account_view.xml)中发现了类似的情况:

<record id="view_account_move_filter" model="ir.ui.view">
            <field name="name">account.move.select</field>
            <field name="model">account.move</field>
            <field name="arch" type="xml">
                <search string="Search Move">
                    <field name="name" filter_domain="['|', ('name','ilike',self), ('ref','ilike',self)]" string="Move"/>
                    <field name="date"/>

按日期搜索很好。但在这种情况下,使用的日期字段没有关系One2Many

你能帮忙解决吗?我找不到通过 One2Many 搜索的示例。先感谢您。

4

2 回答 2

3

这里解决方案:

<record id="view_urspectr_employee_filter" model="ir.ui.view">
    <field name="name">Employees</field>
    <field name="model">hr.employee</field>
    <field name="inherit_id" ref="hr.view_employee_filter"/>
    <field name="arch" type="xml">
        <search position="inside">
            <field name="children_ids" filter_domain="[('children_ids.birthday', '=', self)]" widget="date"/>
        </search>
    </field>
</record>
于 2015-11-16T12:35:13.830 回答
0

在这里,您尝试在 'hr.employee' 表中添加与 'children_ids'相关的 'birthday' 相关字段,但问题仍然可能是它可能无法仅搜索 '2015',因为 'birthday' 字段的数据类型是“日期”,而不仅仅是简单的字符串。不过你可以试一试。

于 2015-11-14T06:12:21.980 回答