Xodoo 第十节

基本搜索

默认情况下,搜索框只有一个搜索对象的name字段的功能。

如果想要搜索其他字段,就需要在filter中自行选择要搜索的字段和需要的操作符,进行过滤搜索。

可供选择的操作符包括如下几种:

  • 包含
  • 不包含
  • 等于
  • 不等于
  • 已设置
  • 未设置

这样基本可以满足用户的需求。

Filter

顾名思义,Filter就是过滤,具体的定义规则就是在XML文件中定义一个search视图:

 <record id="hostel_room_view_search" model="ir.ui.view">
        <field name="model">hostel.room</field>
        <field name="arch" type="xml">
            <search>
                <field name="name"/>
                <field name="room_no"/>
                <field name="state"/>
                <searchpanel>
                    <field name="state" expand="1" select="multi" icon="fa-check-square-o" enable_counters="1"/>
                </searchpanel>
            </search>
        </field>
    </record>

search结点中的三种标签:

  • field: 按字段搜索,即你输入值以后,下拉进行筛选

  • filter: 按照预定的domain进行过滤

  • group: 根据字段进行分组

计算字段的搜索

在Odoo中还有一类字段,是不存储在数据库中的,而是通过计算的方式在需要显示的时候计算出来的值。这类字段通常会使用compute属性,compute对应的是一个方法,这个方法在字段被显示和调用时调用。

沿用以前的模块,我们给型添加一个属性,该属性是由计算出来的:

related_hostel_room = fields.Integer(compute='_compute_related_hostel_room')
    

def _compute_related_hostel_room(self):
        for record in self:
            record.related_hostel_room = self.env['hostel.room'].search_count([
                ('hostel_room_category_id', '=', record.id),
            ])

猜你喜欢

转载自blog.csdn.net/qq_70140795/article/details/139917805