odoo12常用的方法
2019-09-13 今天是中秋节,星期五
#自定义显示名称
def name_get(self):
result = []
for order in self:
rec_name = "%s(%s)"%(record.name,record.date_done)
result.append((record.id, rec_name))
return result # 新添加函数name_search
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
if not args:
args = []
products = []
if name:
positive_operators = ['=', 'ilike', '=ilike', 'like', '=like']
products = self.env['product.product']
if operator in positive_operators:
products = self.search([('name', 'ilike', name)] + args, limit=limit)
if not products:
products = self.search([('size', 'ilike', name)] + args, limit=limit)
if not products:
products = self.search([('material', 'ilike', name)] + args, limit=limit)
else:
products = self.search(args, limit=limit)
return products.name_get() #添加约束
from odoo.exceptions import ValidationError
@api.constrains('age')
def _check_something(self):
for record in self:
if record.age > 20:
raise ValidationError("Your record is too old: %s" % record.age) # all records passed the test, don't return anything #更新时间
@api.multi
def change_updatetime(self):
for order in self:
order.update_time=fields.Datetime.now() 在SQL语句里或ORM里 记录集要用tuple 不能用list
search([('id','in',tuple(ids)]) 调用mapped获取员工名字
return employee_ids.mapped('name') #获取用户组:self.user_has_groups('base.group_no_one') 看板默认分组当无此类型当值时也默认出现在看板里
#对于odoo12来说 group_expand='' 对于selection类型
state = fields.Selection([('a', "A"), ('b', "B"),('c', "C"), ('d', "D")], group_expand='_expand_states') def _expand_states(self, states, domain, order):
# return all possible states, in order
return [key for key, val in type(self).state.selection] #对于odoo12来说 group_expand='' 对于many2one类型
stage_id = fields.Many2one('crm.stage', string='Stage', ondelete='restrict', track_visibility='onchange', index=True,
domain="['|', ('team_id', '=', False), ('team_id', '=', team_id)]",
group_expand='_read_group_stage_ids', default=lambda self: self._default_stage_id())
@api.model
def _read_group_stage_ids(self, stages, domain, order):
""" Read group customization in order to display all the stages in the
kanban view, even if they are empty
"""
stage_ids = stages._search([], order=order, access_rights_uid=SUPERUSER_ID)
return stages.browse(stage_ids) #以超级用户身份创建记录
rent_as_superuser = self.env['library.book'].sudo() rent_as_superuser.create(vals) #获取当前用户对于的员工 employee = self.env.user.employee_ids[0] #对象 employee.id employee.name
按钮写法
@api.multi
def btn_import_wizard(self):
context = self._context.copy()
context.update({'related_field_name': 'order_id','import_model':'sale.order.line'})
return {
'type': 'ir.actions.act_window',
'name': (u'导入'),
'res_model': 'base.import.line.wizard',
'view_mode': 'form',
'target': 'new',
'context': context
}
向导里面的 函数,可以通过按钮里面的context传进来
@api.multi
def btm_confirm(self):
active_id = self._context.get('active_id')
res_model = self.env[self._context['import_model']]
related_field_name = self._context['related_field_name']
<field name="discount" groups="base.group_no_one" string="Disc (%)"/>
<field name="invoice_line_tax_ids" widget="many2many_tags" options="{'no_create': True}" context="{'type':parent.type, 'tree_view_ref': 'account.account_tax_view_tree', 'search_view_ref': 'account.account_tax_view_search'}"
domain="[('type_tax_use','=','sale'),('company_id', '=', parent.company_id)]"/>
<field name="price_subtotal" string="Subtotal" groups="account.group_show_line_subtotals_tax_excluded"/>
动作
<record id="sale_order_line_action" model="ir.actions.act_window">
<field name="name">search_sale_order_line</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order.line</field>
<field name="view_mode">tree,form</field>
<field name="context">{'tree_view_ref':'sale_order_line_tree',
'form_view_ref':'sale_order_line_form'}
</field>
</record>
继承
<xpath expr="//header" position="inside">
<button name="btn_7" string="" type="object" class="oe_highlight oe_read_only" />
</xpath>
<xpath expr="//header/field[@name='order_id']" position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
查看附件
<div class="o_attachment_preview" attrs="{'invisible': ['|',('type', '!=', 'in_invoice'),('state', '!=', 'draft')]}" />
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread"/>
</div>
看板上的进度条:odoo11以上才有
<progressbar field="activity_state" colors='{"planned": "success", "overdue": "danger", "today": "warning"}'/>
odoo学习链接
https://blog.csdn.net/weixin_38495451/article/details/88548613 ---odoo12 视图使用方式(一)
odoo12常用的方法的更多相关文章
- WebAPi添加常用扩展方法及思维发散
前言 在WebAPi中我们通常需要得到请求信息中的查询字符串或者请求头中数据再或者是Cookie中的数据,如果需要大量获取,此时我们应该想到封装一个扩展类来添加扩展方法,从而实现简便快捷的获取. We ...
- StringUtils中的常用的方法
org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...
- JOptionPane类提示框的一些常用的方法
JOptionPane类提示框的一些常用的方法 XMLOracleSwing 最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了 ...
- 常用js方法
function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var v ...
- jQuery操作Table tr td常用的方法
虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ...
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- org.apache.commons.lang.StringUtils中常用的方法
org.apache.commons.lang.StringUtils中常用的方法,这里主要列举String中没有,且比较有用的方法: 1. 检查字符串是否为空: static boolean isB ...
- 常用js方法整理common.js
项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data ...
- Java获取各种常用时间方法大全
Java获取各种常用时间方法大全 package cc.javaweb.test; Java中文网,Java获取各种时间大全 import java.text.DateFormat; import j ...
随机推荐
- Linux分区,格式化概念理解
一.分区概念: 逻辑上分成不同的存储空间. 分区类型: 主分区:最多只能有4个 扩展分区:最多只能有1个. 主分区加扩展分区最多有4个. 布恩那个写入数据,只能包含逻辑分区 逻辑分区: 主分区为什么只 ...
- 『动善时』JMeter基础 — 49、使用JMeter自身代理录制APP测试脚本
目录 1.测试计划内包含的元件 2.HTTP代理服务器的设置内容 3.设置手机的代理服务器 4.录制脚本 5.查看录制的脚本 6.HTTP代理服务器的排除模式 7.保存脚本 8.注意坑点 录制脚本只不 ...
- Linux主机解析顺序
1.介绍 本篇文章由于因公司项目上线,需要对项目环境进行压力测试.在压测过程中,所有打压机从公网对目标项目服务器进行压力测试,发现和内网压力测试的性能结果差距10倍左右,在调整主机对DNS的解析顺序之 ...
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...
- Netty 框架学习 —— 添加 WebSocket 支持
WebSocket 简介 WebSocket 协议是完全重新设计的协议,旨在为 Web 上的双向数据传输问题提供一个切实可行的解决方案,使得客户端和服务器之间可以在任意时刻传输消息 Netty 对于 ...
- 4.13、nfs挂载优化及优缺点
1.硬盘:sas/ssd磁盘,买多块,硬件raid5/raid0,网卡吞吐量要大,至少千兆(多网卡bond0) 2.nfs客户端挂载说明: 文件系统有自己的权限,挂载是建立在文件系统之上的,然后更改挂 ...
- 企业该选择什么样的CRM系统
不论您是需要CRM系统来优化业务流程,还是准备更换一款新的CRM系统,在这之前都应该先明确企业的需求,并了解CRM的哪些功能能够对企业有所帮助.例如,企业的管理者想了解每个销售人员的业绩情况,那么就应 ...
- cache之guava
本文主要记录guava_cache的学习心得! 缓存是什么?为何要用缓存呢? 先参考下图! 这是一张小白图!简单形容了一个普普通通的服务端请求的处理模型! 当一个request请求通过网络不远千里的来 ...
- Windows10:虚拟机开机导致win10黑屏、蓝屏
管理员身份打开cmd(命令提示符) 执行如下5个命令 netsh winsock reset net stop VMAuthdService net start VMAuthdService net ...
- Java:HttpPost 传输Json数据过长使用HttpServletRequest解析
直接上代码 /** * 测试生成json数据 */ @Test public void synYxGoodsInfoTest() { try { String url = "http://1 ...