1.基础文件及目录结构

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

 
data:存放模块预制数据
i18n:存放国际化文件
models:存放模型等py代码
security:存放权限文件
views:存放视图文件
__manifest__.py:该文件用于声明该模块,并指定一些模块元数据。(odoo8时该文件为__openerp__.py。)
 
# -*- coding: utf- -*-
{
# 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- -*-
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:可设置字体格式、样式,可添加图片、链接等内容。效果如下:

关系类型

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.advice中company_id advice_id = fields.Many2one('hr.payroll.advice', string='Bank Advice')
company_id = fields.Many2one('res.company', related='advice_id.company_id', string='Company',

本文摘自:https://www.cnblogs.com/yifugui/p/9117884.html

odoo项目结构参数属性详解的更多相关文章

  1. odoo Botton标签属性详解

    按钮属性 1)icon 按钮图标名,可用的按钮图标在 addons/web/static/src/img/下. 2)string 按钮的显示文字 3)type 动作执行类型.可能值是:workflow ...

  2. android:exported 属性详解

    属性详解 标签: android 2015-06-11 17:47 27940人阅读 评论(7) 收藏 举报 分类: Android(95) 项目点滴(25) 昨天在用360扫描应用漏洞时,扫描结果, ...

  3. OutputCache属性详解(一)一Duration、VaryByParam

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  4. OutputCache属性详解(四)— SqlDependency

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  5. Linux文件权限与属性详解 之 ACL

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  6. Spring中的@Transactional(rollbackFor = Exception.class)属性详解

    序言 今天我在写代码的时候,看到了.一个注解@Transactional(rollbackFor = Exception.class),今天就和大家分享一下,这个注解的用法: 异常 如下图所示,我们都 ...

  7. border-sizing属性详解和应用

    box-sizing用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.它有content-box.border-box和inherit三种取值.inherit指的是从父元素继承box-sizi ...

  8. Angular 6.X CLI(Angular.json) 属性详解

    Angular CLI(Angular.json) 属性详解 简介 angular cli 是angular commond line interface的缩写,意为angular的命令行接口.在an ...

  9. Android开发–Intent-filter属性详解

    Android开发–Intent-filter属性详解 2011年05月09日 ⁄ Andriod ⁄ 暂无评论 ⁄ 被围观 1,396 views+ 如果一个 Intent 请求在一片数据上执行一个 ...

随机推荐

  1. c语言进阶6-指针

    指针是c语言的一个重要组成部分 是c语言的核心.精髓所在,用好指针可以在c语言编程中起到事半功倍的效果.一方面,可以提高程序的编译效率和执行速度以及实现动态的存储分配:另一方面,使用指针可使程序更灵活 ...

  2. 架构师小跟班:SSL证书免费申请及部署,解决页面样式错乱问题完整攻略

    申请证书 1.登录阿里云控制台,产品与服务,选择SSL证书 2.进入SSL证书页面,点击“购买证书”,选择免费1年的证书类型,点击“立即购买” 3.返回SSL证书页面,可以看到证书列表里多了一条记录 ...

  3. 你真的了解 Cookie 和 Session 吗

    我在做面试官的时候,曾经问过很多朋友这个问题: Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等. ...

  4. Sublime Text 格式化代码

    1.添加快捷键 其实在sublime中已经自建了格式化按钮: Edit -> Line -> Reindent 只是sublime并没有给他赋予快捷键,所以只需加上快捷键即可 Prefer ...

  5. Tomcat(Windows)

    百度云:链接:http://pan.baidu.com/s/1pKYrf79    密码:56t0 官网下载网址:http://archive.apache.org/dist/tomcat/tomca ...

  6. 前端插件之Select2使用

    工欲善其事,必先利其器 本系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,上一篇文章介绍了bootstrap-duallistbox这个插件的使用,这一篇开始Select2的征服之旅 Se ...

  7. 2.2.2python的BeautifulSoup库

    from bs4 import BeautifulSoupimport rebroken_html = '<ul class="country"><li>A ...

  8. poj 1205 :Water Treatment Plants (DP+高精度)

    题意:有n个城市,它们由一个污水处理系统连接着,每个城市可以选择 1.将左边城市过来的污水和右边城市过来的污水连同本身的污水排到河里  >V< 2.将左边来的污水连同自己的污水排到右边   ...

  9. Cocos2d-x v3.11 中的新内存模型

    Cocso2d-x v3.11 一项重点改进就是 JSB 新内存模型.这篇文章将专门介绍这项改进所带来的新研发体验和一些技术细节. 1. 成果 在 Cocos2d-x v3.11 之前的版本中,使用 ...

  10. Ubuntu+VMWare 学习中遇到的问题

    1. 虚拟机中Ubuntu分辨率 / 设置分辨率出现Unknown Display VMware中Ubuntu 出现Unknown Display问题解决 1.1 命令无法保存分辨率设置: xrand ...