1.基础文件及目录结构

在认识odoo ORM框架前,先介绍一下odoo中模块目录结构。

 

data:存放模块预制数据
i18n:存放国际化文件
models:存放模型等py代码
security:存放权限文件
views:存放视图文件
__manifest__.py:该文件用于声明该模块,并指定一些模块元数据。(odoo8时该文件为__openerp__.py。)

# -*- coding: utf-8 -*-
{
# name:模块名称
'name': " test",
# description:模块描述
'description': """
自定义模块
""",
# author:模块作者(XXX公司或张三)
'author': "Hu",
# website:作者或公司网址
'website': "http://weibo.com/hcw1202",
# category:模块分类
'category': "test",
# version:模块版本
'version': "版本",
# depends:所依赖其他模块
'depends': ["base","stock","sale"],
# 模块安装时加载
'data': [
'security/权限文件.csv',
'data/预制数据.xml',
'views/视图文件.xml',
],
# 创建数据库时勾选Load demonstration data后安装该模块加载演示数据
'demo': [
'data/演示数据.xml',
],
}

2.Model属性

在/models下添加test.py文件

# -*- coding: utf-8 -*-
from odoo import models, api, fields, _
class Test(models.Model):
# 模型唯一标识(对应数据表为product_manage_product)
_name = 'product_manage.product'
# 数据显示名称,如设置则返回其指定的字段值
_rec_name = 'test_field'
# 字段
test_field = fields.Char(string="字段名称")

model属性详解:
_name:模型唯一标识,类非继承父类时必须指定。
_rec_name:数据显示名称,如设置则返回其指定的字段值,不设置默认显示字段为name的字段值,如无name字段则显示"模块名,id";详见BaseModel.name_get方法。
_log_access:是否自动增加日志字段(create_uid, create_date,write_uid, write_date)。默认为True。
_auto:是否创建数据库对象。默认为True,详见BaseModel._auto_init方法。
_table:数据库对象名称。缺省时数据库对象名称与_name指定值相同(.替换为下划线)。
_sequence:数据库id字段的序列。默认自动创建序列。
_order:数据显示排序。所指定值为模型字段,按指定字段和方式排序结果集。

例:_order = "create_date desc":根据创建时间降序排列。可指定多个字段。

不指定desc默认升序排列;不指定_order默认id升序排列。

_constraints:自定义约束条件。模型创建/编辑数据时触发,约束未通过弹出错误提示,拒绝创建/编辑。

格式:_constraints = [(method, 'error message', [field1, ...]), ...]
method:检查方法。返回True|False
error message:不符合检查条件时(method返回False)弹出的错误信息
[field1, ...]:字段名列表,这些字段的值会出现在error message中。

_sql_constraints:数据库约束。

例:_sql_constraints = [ ('number_uniq', 'unique(number, code)', 'error message') ]
会在数据库添加约束:
CONSTRAINT number_uniq UNIQUE(number, code)

_inherit:单一继承。值为所继承父类_name标识。如子类不定义_name属性,则在父类中增加该子类下的字段或方法,不创建新对象;如子类定义_name属性,则创建新对象,新对象拥有父类所有的字段或方法,父类不受影响。

格式:_inherit = '父类 _name'

_inherits:多重继承。子类通过关联字段与父类关联,子类不拥有父类的字段或方法,但是可以直接操作父类的字段或方法。

格式:_inherits = {'父类 _name': '关联字段'}

3.字段属性

基础类型

Char:字符型,使用size参数定义字符串长度。
Text:文本型,无长度限制。
Boolean:布尔型(True,False)
Interger:整型
Float:浮点型,使用digits参数定义整数部分和小数部分位数。如digits=(10,6)
Datetime:日期时间型
Date:日期型
Binary:二进制型
selection:下拉框字段。

例:state = fields.Selection([('draft', 'Draft'),('confirm', 'Confirmed'),('cancel', 'Cancelled')], string='Status')

Html:可设置字体格式、样式,可添加图片、链接等内容。效果如下:

截于odoo自带项目管理模块

关系类型

One2many:一对多关系。

定义:otm = fields.One2many("关联对象 _name", "关联字段",string="字段显示名",...)

例:analytic_line_ids = fields.One2many('account.analytic.line', 'move_id', string='Analytic lines')"

Many2one

定义:mto = fields.Many2one("关联对象 _name", string="字段显示名",...)
可选参数:ondelete,可选值为‘cascade’和‘null’,缺省为null。表示one端删除时many端是否级联删除。

Many2many

定义:mtm = fields.Many2many("关联对象 _name", "关联表/中间表","关联字段1","关联字段2",string="字段显示名",...)

其中,关联字段、关联表/中间表可不填,中间表缺省为:表1_表2_rel

例:

partner_id= fields.Many2many("res.partner", string="字段显示名",...)

"

复杂类型

参数

readonly:是否只读,缺省值False。
required:是否必填,缺省值Falsse。
string:字段显示名,任意字符串。
default:字段默认值
domain:域条件,缺省值[]。在关系型字段中,domain用于过滤关联表中数据。
help:字段描述,鼠标滑过时提示。
store:是否存储于数据库。结合compute和related使用。

例:sale_order = fields.One2many("sale.order", "contract_id",string="销售订单", domain=[('state','=','sale')])compute:字段值由函数计算,该字段可不储存于数据库。

例:amount = fields.Float(string="金额总计", compute=‘_compute_amount’,store=True)

_compute_amount为计算函数。

related:字段值引用关联表中某字段。

以下代码表示:company_id引用hr.payroll.advicecompany_id

advice_id = fields.Many2one('hr.payroll.advice', string='Bank Advice')
company_id = fields.Many2one('res.company', related='advice_id.company_id', string='Company',

odoo之model参数属性1的更多相关文章

  1. 查询的model里面 一般都要有一个要返回的model做属性 ;查询前要传入得参数,查询后返回的参数 都要集合在一个model中

    查询的model里面 一般都要有一个要返回的model做属性

  2. [Tips]ASP.NET MVC 发布到服务器后Model中属性相关的Attribute失效

    Asp.net MVC4 开发的项目,发布到真实环境环境后Model中的一个属性设置的了Attribute,但是这些Attribute都失效. 经过对比和坚持代码发现控制长度的Attribute使用错 ...

  3. Windows消息传递函数SendMessage参数属性

    Windows消息传递函数SendMessage参数属性 转载于:http://www.cr173.com/html/5605_1.html Windows是一个消息驱动式系统,SendMessage ...

  4. 利用libsvm-mat建立分类模型model参数解密[zz from faruto]

    本帖子主要就是讲解利用libsvm-mat工具箱建立分类(回归模型)后,得到的模型model里面参数的意义都是神马?以及如果通过model得到相应模型的表达式,这里主要以分类问题为例子. 测试数据使用 ...

  5. CLR via C#(11)-无参属性、有参数属性(索引器)

    一. 无参属性 1. 定义属性 无参属性就是我们最常见的属性方式,在赋值时可以加入一定的逻辑判断.属性的定义其实不复杂,先看个直观的例子: 说明: 属性要定义名称和类型,且类型不能是void. 属性是 ...

  6. Uploadify 3.2 参数属性、事件、方法函数详解

    一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...

  7. (转)Uploadify 3.2 参数属性、事件、方法函数详解

    转自http://blog.sina.com.cn/s/blog_5079086b0101fkmh.html Hallelujah博客 一.属性 属性名称 默认值 说明 auto true 设置为tr ...

  8. KindEditor-编辑器配置参数属性

    KindEditor-源码分析 通过使用KE.show(config)方法即可将编辑器添加到文档中.下面是一段源码: KE.show = function(args) {     KE.init(ar ...

  9. struts获得参数(属性,对象,模型驱动)

    0. strutsMVC

随机推荐

  1. Java -- JDBC 学习--处理Blob

    Oracle LOB LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的数据).LOB 分为两种类型:内部LOB和外部L ...

  2. [FJOI2017]矩阵填数——容斥

    参考:题解 P3813 [[FJOI2017]矩阵填数] 题目大意: 给定一个 h∗w 的矩阵,矩阵的行编号从上到下依次为 1...h ,列编号从左到右依次 1...w . 在这个矩阵中你需要在每个格 ...

  3. 1093. Count PAT's

    The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...

  4. NO.8:绝不在构造或者析构过程中调用virtual函数

    在构造和析构执行期间不要调用virtual函数,因为这类调用从不会下降至derived class(比起当前执行构造函数和析构函数) 如果在base class 构造函数或者析构函数调用virtual ...

  5. 把pandas dataframe转为list方法

    把pandas dataframe转为list方法 先用numpy的 array() 转为ndarray类型,再用tolist()函数转为list

  6. CodeForces786B 线段树 + 最短路

    给定n颗行星,q次处理,地球位置为s,求解在q次处理后,地球到每一颗行星的位置. 其中q有三种不同的操作: 输入v,u,wv,u,w,构建一条从vv到uu的代价为ww的路线 输入u,l,r,wu,l, ...

  7. Nginx插件之openresty反向代理和日志滚动配置案例

    Nginx插件之openresty反向代理和日志滚动配置案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.openresty介绍 1>.Nginx介绍 Nginx是一款 ...

  8. Unity NavMesh导航网格 初级教程

    目的:要实现的功能就是你点击一下地图上的某个地方,人物就向着那个点移动.有点自动寻路的味道.  例子:三国群英传,三国赵云传之类的游戏里面的人物移动就可以用这个实现.还有一个我不太喜欢玩的游戏英雄联盟 ...

  9. CM记录-升级Spark版本到2.x(转载)

    ①csd包:http://archive.cloudera.com/spark2/csd/    下载SPARK2_ON_YARN-2.2.0.cloudera1.jar ②parcel包:http: ...

  10. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...