在整理英语单词开发模块的过程中,有这样一个需求,就是我在查询界面里输入一个查询的值A,这个A可能是下面的任何一个值

1.一个英语单词  2.汉语文字  3.一个英语单词的部分

这里有两张表:english.lexicon 和 english.lexicon.explain,前者是主表记录单词信息,后者是从表记录单词的解释,二者是一对多的关系。

from odoo import fields, models

class EnglishLexicon(models.Model):

    _name = 'english.lexicon'
_description = 'english lexicon' word = fields.Char(string="Word", required=True, index=True)
lexicon_explain_ids = fields.One2many('english.lexicon.explain', 'english_lexicon_id', "Detail")
america_accent = fields.Char(string="America Accent")
british_accent = fields.Char(string="British Accent")
chinese_mean = fields.Text(string="Chinese Mean")
america_voice_url = fields.Char(string="America URL")
british_voice_url = fields.Char(string="British URL")
source_name = fields.Char(string="From")
sequence = fields.Integer()
is_updated = fields.Boolean(string="Is Updated", default=False) class EnglishLexiconExplain(models.Model): _name = 'english.lexicon.explain'
_description = 'english lexicon explain' english_lexicon_id = fields.Many2one('english.lexicon', 'EnglishLexicon', ondelete='cascade', required=True)
order = fields.Integer()
raw_html_mean = fields.Text(string="Html Mean")
gram = fields.Char(string="Gram")
english_mean = fields.Text(string="Processed Mean")
chinese_mean = fields.Text(string="Chinese Mean")
is_format = fields.Boolean(string="Is Format", default=False)

那么这一个参数怎么在odoo中实现这个查询效果呢,即 select *  from tableA where filed1 like '%A%' or field2 like '%A%' 的动态效果呢?

其实在了解了odoo的searchview页面的基础知识之后,这个很容易实现,也就几行代码的事情。

        <record id="english_lexicon_view_search" model="ir.ui.view">
<field name="name">english.lexicon.search</field>
<field name="model">english.lexicon</field>
<field name="arch" type="xml">
<search string="Search">
<field name="word" filter_domain="['|', ('word', 'ilike', self), ('lexicon_explain_ids.chinese_mean', 'ilike', self)]"/>
<field name="chinese_mean"/>
</search>
</field>
</record>

特别注意上面的红色部分,在浏览器中输入参数,用户一旦对应word字段,odoo框架就会匹配2个条,word 字段 和 子表的chinese_mean字段作为条件进行查询。

同时这里也向我们展示了如何通过主表访问子表的任何一个字段的格式: ( {子表的id集合}.{子表的具体字段},   '操作符合' ,   '参数值' ) 。

自此我们就完成了多表多字段对应一个参数的查询,就简简单单的在xml文件中做了下配置,这一点上更加体现出了odoo框架的强大。不需要自己再去组织逻辑去动态的拼凑sql语句等功能。

或许这里的意义不止如此,利用这个特性我们甚至不用针对app进行特别的编码,只需要在ionic的部分传递对应的domian参数即可实现手机端的调用,接下来让我们拭目以待。

odoo 11 实现多个字段对应一个查询参数的查询的更多相关文章

  1. ionic访问odoo 11接口

    在架设完毕odoo 11的网站之后,第一次面临手机app该如何访问后台网站的问题,是不是模式类似asp.net mvc 那样的模式,或者还存在其他的访问方法,带着这个疑问与困惑,开始的我的研究学习之路 ...

  2. odoo 11导入外部数据过程记录

    在开发过程中,遇见需要将SQL Server中的数据转移到Pg数据库的情况,那么如何做才能解决这一问题呢? 1.自己写代码,将数据从SQL Server到PG. 2.利用odoo自带的导入功能导入. ...

  3. INNODB自增主键的一些问题 vs mysql获得自增字段下一个值

    今天发现 批量插入下,自增主键不连续了....... InnoDB AUTO_INCREMENT Lock Modes This section describes the behavior of A ...

  4. cassandra——可以预料的查询,如果你的查询条件有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现

    cassandra的索引查询和排序 转自:http://zhaoyanblog.com/archives/499.html   cassandra的索引查询和排序 cassandra的查询虽然很弱,但 ...

  5. 【转】odoo学习之:开发字段解析

    odoo新API中,字段类型不变,继承改变 1.旧的API定义模型: from openerp.osv import osv,fields class oldmodel(osv.osv): #模型名称 ...

  6. oracle 实现多字段匹配一个关键字查询语句

    oracle 实现多字段匹配一个关键字查询语句:有两种方法(经测试,10g中不能用,11g才行): 第一种. select * from table where ('字段名1' ||'字段名2' || ...

  7. Django模型层之字段查询参数及聚合函数

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. 字段查询是指如何指定SQL WHERE子句的 ...

  8. django字段查询参数及聚合函数

    字段查询是指如何指定SQL WHERE子句的内容.它们用作QuerySet的filter(), exclude()和get()方法的关键字参数. 默认查找类型为exact. 下表列出了所有的字段查询参 ...

  9. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用 ...

随机推荐

  1. JMeter 参数化之利用JDBCConnectionConfiguration从数据库读取数据并关联变量

    参数化之利用DBC Connection Configuration从数据库读取数据并关联变量   by:授客 QQ:1033553122 1.   下载mysql jar包 下载mysql jar包 ...

  2. Android联网更新应用

    UpdateInfo public class UpdateInfo { public String version;//服务器的最新版本值 public String apkUrl;//最新版本的路 ...

  3. C# winform三种定时方法

    1. 直接用winform 的 timers 拖控件进去 代码 public partial class Form1 : Form     {         public Form1()       ...

  4. web测试之界面测试

    所谓界面测试就是指,布局是否合理.整体风格是否一致.各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性.导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观 ...

  5. CSS| 框模型-輪廓

    轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用.CSS outline 属性规定元素轮廓的样式.颜色和宽度. 相關屬性 outline-color 属性 ou ...

  6. sftp 建立用户

    1.创建sftp组:#groupadd sftp 2.创建测试账户:#useradd -g sftp -s /bin/false testuser 修改密码:# passwd sftp 3.修改测试账 ...

  7. dumpe2fs 命令的使用,转储 ext2/ext3/ext4 文件系统信息

    使用man 命令可以查看 dumpe2fs 命令具体的使用的方法: NAME dumpe2fs - dump ext2/ext3/ext4 filesystem information SYNOPSI ...

  8. VSCode + PYQT5 + QtDesigner 环境搭建和测试

    目的:编写Python桌面应用程序. 备注:也可以选择VS2017+QtDesigner ,但更喜欢VSCode 第1步:安装PyQt5和PyQt5-tools pip3 install -i htt ...

  9. nginx1.14的安装

    编译安装nginx1.14.2 #拷贝指定文件到当前目录下[root@localhost ~]# find /usr/share -iname "*.jpg" -exec cp { ...

  10. 如何快速搭建&配置本地服务器-前端技能

    废话不多说,上图: 首先登录http://www.phpstudy.net/download.html 下载安装phpstudy,特别简单不详解: 创建一个本机项目并且与本机域名进行绑定主要分为两步; ...