odoo14之Qweb的一些参数

注册报表:

@string: 在打印按钮那里的显示名称

@id:外id标识

@name: 完整主模板名称 模块名.主板模名称 用于管理和调用

@file: 完整模板文件名 模块名.模板文件名 用于更好地关联模板

@model:相关的模型显示在那个模块进行打印报表 通常在各视图中的打印那里会出现上面表示在采购订单相关视图时,会出现“打印-询价单/采购订单”

@report_type: 报表类型 是 qweb-pdf 或 qweb-html

@report_name: 打印出来的文件名

@groups_id:指定权限

@attachment_use:使用附件,这样不会一直查数据库,只能当数据变化时才会查数据库

@attachment:附件的名称,当我们下载下来的文件名

报表模板

模板中的标签统一都是以”t-”开始的。

t-name 用于指明模板的名称

t-extend 用于指明该模板是继承自另外哪一个模板,后面会带父模板的名称,如:t-extend=“Login”

t-jquery 一个jQuery的选择器,后面指明选择器的定义,如:t-jquery=”.oe_logiin”

t-operation 一般跟在t-jquery后面,指明选择器找到元素后执行的动作,其值有:append(追加)、replace(替换)

t-if 用于指明元素在页面产生的条件,后面是带一个javascript的表达式,返回True或False

条件表达式

比较符号:

注 <<= 不能用在表达式中,只能用字母代替

t-att-### 用于指明一个元素的属性值,###是元素的属性名称,如:t-att-value=”javascript表达式”

# 属性的字符替换

t-attf-prefixed 取代内容,上面的就是动态类

t-att=mapping 键值对组成属性,主要用多对

结果:

t-att=pair 一对,这个对一个是键,后一个是值

结果:

t-foreach 用于指明一个循环调用,后面一般带的是一个数组

还有一些变量

rec_index 从0开始循环索引

rec_size 要循环的记录集大小

rec_first 第一个元素

rec_last 最后一个元素

rec_even index为偶数时为真

rec_odd index为奇数时为真

rec_parity 是偶数和奇数

rec_all 表示循环结束的标识

rec_value 循环一个字典时,的键的值

t-as 用于取得循环中的单个值,与t-foreach搭配使用,后面带的是一个变量名,可以循环中使用变量取值

t-esc 用于一个文字输出。过滤安全值,像html元素

t-raw 数据库中的原始数据输出

t-call 用于调用另外模板,后面带一个模板的名称

t-set 用于设定一个变量,后面带变量的名称,一般跟t-value搭配使用

设置了变量 new_variable 的值 为 True

t-value 也可以是表达

设置了变量foo值为3

t-value可以是一段html

设置了变量foo 为 <li>ok</li>

t-value 用于指定某个变量或元素的值

# 动态属性

t-att- prefixed 如 <img>的src 就可以 t-att-src=”…”

#设置属性

t-att-$name

$name 是属性名

结果:

t-attf-$name 用于混合,有字符串也有变量,变量用{{}}

t-att=mapping 键值对组成属性,主要用多对

结果:

t-att=pair 一对,这个对一个是键,后一个是值

结果:

docs:当前报表的记录

doc_ids:记录中的id集

list of ids for the docsrecords

doc_model:记录的模型

model for the docs records

time:Python标准库中引用的time

user:为用户打印报表的res.user记录

res_company:当前用户公司的记录

翻译报表需要定义两个模板:

主要的报表模板、可翻译文档。

可以从可翻译文档中通过“t-lang”属性调用主翻译模板,(您可以使用属性t-lang从主模板调用可翻译文档,将其设置为语言代码(例如fr或en_US)或记录字段。如果你使用的字段是可翻译的(如国家名称,销售条件等),你还需要重新浏览相关记录与适当的上下文。))

Python专用指令

1:格式化纪录

  • t-field只能用于格式化记录字段(从browe函数获取到的),可以根据字段类型自动匹配格式
  • t-options只能用于自定义字段,最常用的是widget,其他的选项都是field-xxwidget-xx

2:在controller中渲染模版

 

3:在视图中渲染模版

ir.ui.view:中的render方法:

  • render(cr, uid, id[, values][, engine='ir.qweb][, context])
    通过view的数据库id来渲染一个qweb视图模板,模板在ir.ui.view记录会自动加载,它会为渲染环境设置一系列默认值

    • request – 当前WebRequest对象
    • debug – 当前请求是否是debug模式
    • quote_plus – 是否进行url encode转义
    • json – 相关的标准库
    • time – 相关的标准库
    • datetime – 相关的标准库
    • relativedelta – model的时间处理属性
    • keep_query – 一个keep_query函数,参数1:values-传递给qweb的上下文环境,参数2:engine (str) 用于qweb渲染的odoo模型名

参考:

https://blog.csdn.net/wangkun__/article/details/52683179

https://www.cnblogs.com/ygj0930/p/10826202.html

https://www.jianshu.com/p/695984c4aad2 (这个实战写得很好)

https://www.odoo.com/documentation/14.0/reference/qweb.html

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in Odoo and tagged by 织梦先生. Bookmark the permalink.