Odoo字段类型详解
<div id="post_detail">
Odoo字段类型详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826099.html
一:基本字段类型
Binary:二进制类型,用于保存图片、视频、文件、附件等,在视图层显示为一个文件上传按钮。【Odoo底层对该类型字段的容量作了限制,最多能容纳20M内容】
Char:字符型,size属性定义字符串长度。
Boolean:布尔型
Float:浮点型,如 rate = fields.float('Relative Change rate',digits=(12,6)), digits定义数字总长和小数部分的位数。
Integer:整型
Date:短日期,年月日,在view层以日历选择框显示。
Datetime:时间戳。
Text:文本型,多用于多行文本框,可以用widget属性为它添加样式。
Html:与text类似,用于多行文本编辑,不过自带编辑器样式,并且会把内容以html解析。
Selection:下拉列表,枚举类型。
示例:state = fields.Selection([('draft', 'Draft'),('confirm', 'Confirmed'),('cancel', 'Cancelled')], string='Status')
二:关联字段类型
one2one: 一对一关系。
格式为:fields.one2one(关联对象Name, 字段显示名, ... )。在V5.0以后的版本中不建议使用,而是用many2one替代。
many2one: 多对一关系,格式为:fields.many2one(关联对象Name, 字段显示名, ... )。可选参数有:ondelete,可选值为"cascade"和"null",缺省值为"null",表示one端的record被删除后,many端的record是否级联删除。
参数列表: comodel_name(string) -- 目标模型名称,除非是关联字段否则该参数必选 domain -- 可选,用于在客户端筛选数据的domain表达式 context -- 可选,用于在客户端处理时使用 ondelete -- 当所引用的数据被删除时采取的操作,取值:'set null', 'restrict', 'cascade' auto_join -- 在搜索该字段时是否自动生成JOIN条件,默认False delegate -- 设置为True时可以通过当前model访问目标model的字段,与_inherits功能相同
one2many: 一对多关系,格式为:fields.one2many(关联对象Name, 关联字段, 字段显示名, ... ),例:'address'=fields.one2many('res.partner.address', 'partner_id', 'Contacts')。
参数列表: comodel_name -- 目标模型名称, inverse_name -- 在comodel_name 中对应的Many2one字段 domain -- 可选,用于在客户端筛选数据的domain表达式 context -- 可选,用于在客户端处理时使用 auto_join -- 在搜索该字段时是否自动生成JOIN条件,默认False limit(integer) -- 可选,在读取时限制数量
many2many: 多对多关系。
comodel_name -- 目标模型名称,除非是关联字段否则该参数必选 relation -- 关联的model在数据库存储的表名,默认采用comodel_name获取数据 column1 -- 与relation表记录相关联的列名 column2 --与relation表记录相关联的列名 domain -- 用于在客户端筛选数据的domain表达式 context -- 用于在客户端处理时使用 limit(integer) --在读取时限制数量
例如:'category_id'=fields.many2many('res.partner.category','res_partner_category_rel','partner_id','category_id','Categories')
表示以多对多关系关联到对象res.partner.category,关联表为'res_partner_category_rel',关联字段为 'partner_id'和'category_id'。当定义上述字段时,OpenERP会自动创建关联表为 'res_partner_category_rel',它含有关联字段'partner_id'和'category_id'。
三:引用类型
1:related字段
字段=fields.类型(related="某个字段.类字段",store=true/false)
related字段可以简记为“带出字段”,由当前模型的某个关联类型字段的某个字段带出值。
2:reference字段
reference是比related更高级的引用字段,可以指定该字段引用那些模型范围内的模型的哪些字段的值,范围更广。
四:Odoo保留字段
- name(Char) -- _rec_name的默认值,在需要用来展示的时候使用
- active(Boolean) -- 设置记录的全局可见性,当值为False时通过search和list是获取不到的
- sequence(Integer) -- 可修改的排序,可以在列表视图里通过拖拽进行排序
- state(Selection) -- 对象的生命周期阶段,通过fileds的states属性使用
- parent_id(Many2one) -- 用来对树形结构的记录排序,并激活domain表达式的child_of运算符
- parent_left,parent_right -- 与 _parent_store结合使用,提供更好的树形结构数据读取
五:自动化属性
在模块安装后,模块中的类会自动添加一些属性,这些属性是odoo自动化添加与修改的,可以在odoo调试模式下,点击一个model进行查看。如:
自动化属性主要有:
对应的数据库表中也会自动生成这些字段:
如果不想为model自动添加这些属性,可以在类中通过:
来关闭自动化属性。
六:Compute字段
compute字段不是一种字段类型,而是指某个字段的值是计算出来的。
一个字段的值,可以通过一个函数来动态计算出来。定义格式如下:
字段名=fields.类型(compute="函数名",store=True/false) #store定义了该动态改变的字段值是否保存到数据库表中@api.depends(依赖的字段值)#depend的字段值一旦发生变化,就会触发该函数,从而更新compute字段值。
def 函数(self):
self.字段=计算字段值
</div>
<div class="postDesc">posted @ <span id="post-date">2019-05-07 16:06</span> <a href="https://www.cnblogs.com/ygj0930/">.长卿</a> 阅读(<span id="post_view_count">227</span>) 评论(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=10826099" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(10826099);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=302747,cb_entryId=10826099,cb_blogApp=currentBlogApp,cb_blogUserGuid='485879be-596f-e611-9fc1-ac853d9f53cc',cb_entryCreatedDate='2019/5/7 16:06:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>
</div><!--end: forFlow -->
</div>
昵称:
不改了 退出 订阅评论
[Ctrl+Enter快捷键提交]
【前端】SpreadJS表格控件,可嵌入系统开发的在线Excel
【推荐】码云企业版,高效的企业级软件协作开发管理平台
【推荐】程序员问答平台,解决您开发中遇到的技术难题
· odoo项目结构参数属性详解
· odoo开发基础--模型之基本字段类型
· openerp学习笔记 对象间关系【多对一(一对一)、一对多(主细结构)、多对多关系、自关联关系(树状结构)】
· odoo官方文档第一章ORM
· OpenERP对象字段定义的详解
· 三个人用意念一起玩俄罗斯方块是什么体验?
· 全球首次!信号灯作5G基站:日本来了一波骚操作
· Cloudflare 因自己软件的问题导致宕机事故
· 李彦宏喊你来坐无人驾驶出租车;联手华为,百度继续搞芯片
· 英伟达选择三星代工芯片,台积电回应
» 更多新闻...