Feng’ Blog

Odoo10开发笔记一
Odoo快速生成模块python E:\GOdoo10\GOdoo10\source\odoo-bin scaff...
扫描右侧二维码阅读全文
27
2017/11

Odoo10开发笔记一

Odoo快速生成模块

python E:\GOdoo10\GOdoo10\source\odoo-bin scaffold hpTest  E:\GOdoo10\GOdoo10\myaddons\myaddons-master\crud_hp

odoo-bin表示源代码的入口

scaffold表示脚手架功能

hpTest表示生成模板的名称

E:GOdoo10GOdoo10myaddonsmyaddons-mastercrud_hp

这段话表示生成在哪个目录下

echo %PATH% 表示cmd得到系统path

set path=E:GOdoo10GOdoo10runtimepython;path

pycharm termainal设置环境变量的命令

env是环境变量,可以借助此变量获取odoo中的任一对象

如果想要获取当前登录对象可以使用self.env.user,

1.利用env[model]获取类对象:

self.env['ir.model'].search([('state', '!=', 'manual')])

2.利用cr执行sql语句:self.env.cr.execute(query, (value,))

满足某些条件的隐藏

<xpath expr="//field[@name='parent_id']" position='attributes'>

    <attribute name="attrs">{'invisible': [('passenger','=', True)]}</attribute>

</xpath>

@说明:@api.one 这个是返回一个记录用的

@api.multi 这是是返回一记录列表用

self.ensure_one() 确保是单个,否则报异常

odoo权限

noupdate 值为1 表示升级模块不会更新本数据

record rule 记录是 ir.rule 模型, 存在public.ir_rule 表格中

model_id 作用于哪个模型 值为 model_模型名

domain_force 对该模型中所有记录进行某种过滤操作

常用的 ['|',('user_id','=',user.id),('user_id','=',False)] 表示是自己的单

user_id是记录的字段,这个看实际情况改变, user.id 代表当前登录用户的id

eval:把eval的值通过作为python运算返回该属性

ref:视图的方法,根据 module_name.xml_id 返回数据库id

[(6,0,[xx,yy])]

(0,_ ,{’field’: value}) 这将创建一个新的记录并连接它

(1,id,{’field’: value}): 这是更新一个已经连接了的记录的值

(2,id,_) 这是删除或取消连接某个已经连接了的记录

(3,id,_) 这是取消连接但不删除一个已经连接了的记录

(4,id,_) 连接一个已经存在的记录

(5,_,_) 取消连接但不删除所有已经连接了的记录

(6,_,[ids]) 用给出的列表替换掉已经连接了的记录

这里的下划线一般是0或False

self.env 对象给出了访问请求参数和其他有用的信息: self.env.cr 或者 self._cr是数据库游标对象,
通常用于查询数据库self.env.uid或者self._uid是当前用户的数据库IDself.env.user是当前用户记录self.env.ref(xml_id)
返回XML ID对应的记录
self.env[model_name]返回给定模型的实例 


去除Many2one字段的“创建并编辑”选项        
<field name="pay_bank_id" options="{'no_create_edit': 1}" /> 
通过组来隐藏想要隐藏的字段groups="product.group_uom"   或  groups="base.group_no_one"

在非创建条件下为只读状态:

attrs="{'readonly': [('id','!=',False)]}"

如果为下拉框则该为:

attrs="{'readonly': [('id','!=',False)]}" options="{'no_create_edit': True}"

odoo10 默认登陆密码

@api.model
def create(self, vals):
  user = super(Member, self).create(vals)
  user.password = user.login
  if user.password:
    user.write({'password': user.password})
  return user

导出csv

COPY (select * from res_users) to 'D:\members/res.csv' with csv header;

对视图进行排序

default_order="date_planned_start desc"

看板

Odoo开发笔记

重载原模型的方法

在odoo承机制下,可以通过重写原模型的方法来重载该方法。的确可以这样做,而这里要讲的是还有一种更加优雅的继承原模型的方法,那就是通过 super()来调用父类的方法

多态继承_inherit = ['todo.task', 'mail.thread']

数据结构模型

<act_window>

对应模型 ir.actions.act_window ,视窗动作对象。

<menuitem>

对应模型 ir.ui.menu ,菜单对象。

<report>

对应模型 ir.actions.report.xml 打印动作对象。

<template>

对应模型 ir.ui.view ,视图的模板文件对象。

<url>

对应模型 ir.actions.act_url URL打开动作对象。

Last modification:January 8th, 2019 at 09:04 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment