odoo在日常使用中,常会有这样的需要,比如,某个列表按照 日 、周、月、年来过滤搜索。

效果:

那么如何实现呢,如下是一段不同写法的样例代码,提供参考。

<!--某模型 搜索视图-->
<record id="view_xxxxx_search" model="ir.ui.view">
<field name="name">XXXXXXXX search</field>
<field name="model">你的模型名</field>
<field name="arch" type="xml">
<search string="xxxxxxxxxxxx search">
<field name="name" string="按照name字段搜索" domain="[('xxxxxxxx.name', '=', self)]"/>
<field name="xxxxx_id" string="按照xxxxx_id字段搜索" domain="[('xxxxxxxxx.xxxxx_id', '=', self)]"/>
<separator/>
<filter string="进口" name="in" domain="[('inout','=','i')]"/>
<filter string="出口" name="export" domain="[('inout','=','e')]"/>
<separator/>
<filter string="当天" name="today" domain="[('create_date','&gt;=', time.strftime('%Y-%m-%d 00:00:00')),('create_date', '&lt;', context_today().strftime('%Y-%m-%d 23:59:59'))]"/>
<filter string="本周" name="last_week" domain="[('create_date','&gt;', (context_today() - datetime.timedelta(weeks=1)).strftime('%%Y-%%m-%%d 00:00:00'))]"/>
<filter string="本月" name="month" domain="[('create_date','&gt;=', time.strftime('%Y-%m-01 00:00:00')),('create_date','&lt;', (context_today() + relativedelta(months=1)).strftime('%Y-%m-01 00:00:00'))]"/>
<filter string="上月" name="month2" domain="[('create_date','&lt;', time.strftime('%Y-%m-01 00:00:00')),('create_date','&gt;=', (context_today() - relativedelta(months=1)).strftime('%Y-%m-01 00:00:00'))]"/>
<filter string="本年" name="year" domain="[('create_date','&lt;=', time.strftime('%Y-12-31 23:59:59')),('create_date','&gt;=', time.strftime('%Y-01-01 00:00:00'))]"/> <separator/>
<filter name="过去24小时" string="Last 24h" domain="[('create_date','&gt;', (context_today() - datetime.timedelta(days=1)).strftime('%Y-%m-%d 00:00:00') )]"/>
<filter name="上周" string="Last Week" domain="[('create_date','&gt;', (context_today() - datetime.timedelta(weeks=1)).strftime('%Y-%m-%d 00:00:00'))]"/>
                    <!--另一种写法-->
                    <separator/>
<filter name="week" string="本周"
domain="[
'&amp;',
('create_date', '>=', (context_today() + relativedelta(weeks=-1,days=1,weekday=0)).strftime('%Y-%m-%d')),
('create_date', '&lt;=', (context_today() + relativedelta(weekday=6)).strftime('%Y-%m-%d')),
]"/>
<filter name="month" string="本月"
domain="[
'&amp;',
('create_date', '>=', (context_today() + relativedelta(day=1)).strftime('%Y-%m-%d')),
('create_date', '&lt;=', (context_today() + relativedelta(months=1, day=1, days=-1)).strftime('%Y-%m-%d')),
]"/> </search>
</field>
</record>

注意:

create_date字段,和create_uid字段一样,都是odoo系统自带的字段,不需要在模型中创建,视图层可以直接引用,但是需要在前端列表视图中加载显示,如果界面上确实不想显示该创建时间字段,那么可以在列表tree视图中该字段下加属性:invisible="1",就可以实现加载但隐藏的效果。

相关地址:

https://www.cnblogs.com/chjbbs/p/5575085.html

http://www.odoov.com/index.php?title=%E4%BD%BF%E7%94%A8%E6%97%B6%E9%97%B4%E5%92%8C%E6%97%A5%E6%9C%9F

http://www.cnblogs.com/dancesir/p/6893224.html

https://www.cnblogs.com/kfx2007/p/6008508.html

https://www.zhiyunerp.com/forum/erp-1/question/odoo-354

*******************************

按照时间分组:

             <!--<group expand="" string="Group By...">-->
<!--<separator orientation="vertical" />-->
<!--<filter name="group_by_hour" string="Creation date (hour)" domain="[]" context="{'group_by':'start_date_hour'}"/>-->
<!--<filter name="group_by_day" string="Creation date (day)" domain="[]" context="{'group_by':'start_date:day'}"/>-->
<!--<filter name="group_by_week" string="Creation date (week)" domain="[]" context="{'group_by':'start_date:week'}"/>-->
<!--<filter name="group_by_month" string="Creation date (month)" domain="[]" context="{'group_by':'start_date:month'}" />-->
<!--<filter name="group_by_year" string="Creation date (year)" domain="[]" context="{'group_by':'start_date:year'}"/>-->
<!--</group>-->

odoo开发笔记--前端搜索视图--按照时间条件筛选的更多相关文章

  1. odoo开发笔记-tree列表视图拖拽排序

    odoo列表tree视图 拖拽排序 实现效果: 实现方式: 模型中定义字段: class CusYourModel(models.Model): """ 你的模型 &qu ...

  2. odoo开发笔记 -- many2one搜索更多增加默认过滤条件

    没加过滤条件的时候,效果如下,点击下拉框,搜索更多出现所有模型下的模板: 改进方法(增加默认过滤条件,显示指定模型下的内容): class IrCloudReport(models.Model): _ ...

  3. odoo开发笔记 -- 多个视图共用一个模型

    除了写序列优先绑定之外, 窗口引用的视图id也要绑定,否则页面加载的时候,可能不是自己需要显示的视图.例如:<field name="view_id" ref="c ...

  4. odoo开发笔记 -- 前台不同视图访问同一个模型

    看一下partner这个表, 客户和供应商,都用这个表,那怎么区分呢: 供应商: 客户 注意这两个里面用domain来进行区分:   <field name="domain" ...

  5. odoo开发笔记 -- 前端开发相关

    https://www.cnblogs.com/lyzg/p/5634565.html http://dmyz.org/archives/598 https://www.jianshu.com/p/6 ...

  6. odoo开发笔记 -- 搜索视图继承扩展

    odoo开发笔记 -- 搜索视图继承扩展

  7. odoo开发笔记 -- div标签代替odoo button写法

    odoo开发笔记 -- div标签代替odoo button写法 并调用自定义js <footer> <div id="confirm_request_cloud_repo ...

  8. odoo开发笔记 -- 后台日志输出及分析

    odoo开发笔记 -- 后台日志输出及分析 附:日志分析软件

  9. OpenERP(odoo)开发实例之搜索检索过去3个月的数据

    转自:http://www.chinamaker.net/ OpenERP(odoo)开发实例之搜索过滤:检索过去3个月的数据 解决这个问题的重点在于 relativedelta 的应用 示例代码如下 ...

随机推荐

  1. 解决设置select默认选中不生效的方法

    $scope.storageTypeList = ['Glusterfs','NFS','Ceph']; 不生效的方法: <select class="form-control&quo ...

  2. 第11章:MongoDB-CRUD操作--文档--查询

    ①语法 db.collection.find(query, projection) ②参数 query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键.查 ...

  3. 很实用的linux 上的svn安装和svnserver 的重启

    虽然在windows上搭建SVN很简单,但是效能却不高,这当然是和linux相比了.然而在linux上搭建SVN却非常繁琐,所以今天这篇文章就来一步一步教您如何在Centos上搭建SVN 安装 #yu ...

  4. hadoop flume 架构及监控的部署

    1 Flume架构解释  Flume概念 Flume是一个分布式 ,可靠的,和高可用的,海量的日志聚合系统 支持在系统中定制各类的数据发送方 用于收集数据 提供简单的数据提取能力 并写入到各种接受方 ...

  5. Kindeditor图片粘贴上传(chrome)

    kindeditor4.1.x版本已支持图片批量上传,不过传统的选文件上传的方式依然效率低下. 很多时候,编辑人员可能需要将一个文档中图片上传到网上,那么,按照传统的上传方法,他必须先将图片另存为到本 ...

  6. canvas画的时钟

    结合几天来学习的canvas的API,终于完成了一个时钟呵呵 html <!doctype html> <html> <head> <meta charset ...

  7. 10-padding(内边距)

    padding padding:就是内边距的意思,它是边框到内容之间的距离 另外padding的区域是有背景颜色的.并且背景颜色和内容的颜色一样.也就是说background-color这个属性将填充 ...

  8. P750 内存插槽

    查看p750内存插槽占用情况 lscfg -vp | grep -p DIMM Memory DIMM: Record Name.................VINI Flag Field.... ...

  9. Android多点触控手势基础

    处理多点触控手势 多点触控就是同时把一根以上的手指放在屏幕上. 再继续往下以前需要补充一些名词: 触控手势:就是把一根或者几根手指放在屏幕上做各种动作,其中包括保留一根手指的前提下,拿起或者放下其余的 ...

  10. noip第26课作业

    1.    信使 [问题描述] 战争时期,前线有n个哨所,每个哨所可能会与其他若干个哨所之间有通信联系.信使负责在哨所之间传递信息,当然,这是要花费一定时间的(以天为单位).指挥部设在第一个哨所.当指 ...