本文引用’刘金亮’的<odoo 快速入门与实战>的节选内容,同时也归纳了多为大神和自己(odoo小白)的总结,在文章的结尾,也会列出参考的文献,作者,及作品连接,方便大家查看与学习.会不定时更新此文章内容.
如大家想了解更改相关知识和信息,请上书店及官网购买此书,支持正版.也可以去大神的主页查看更多专业知识,系统的学习odoo.
常用字段:
- Char/Text:长短不一的文本类型
name = fields.Char(string="猫猫名称", required=True)
description = fields.Text(string="内容简介",
help="""向借购买者描述本猫主子内容""")
- Boolean:布尔值
borrowed = fields.Boolean(string="是否被收养", default=False)
- Integer:整数
age = fields.Integer(string="年龄")
- Float: 浮点型,可指定显示位数和小数点,digits是一个元组,前面的数代表该数字的总位数,后面的数字代表小数点的精度
price = fields.Float(string="定价", digits=(7, 2))
- Date: 日期型
doing_date = fields.Date(string="入店时间")
- Datetime: 日期+时间型
date_last_borrowed = fields.Datetime("最后被收养时间",
index=True, readonly=True)
- Binary: 二进制型
cache = fields.Binary(attachment=True)
- Image:图片
_inherit = ['image.mixin']#如不写此段,则无法保存图片,无法显示到视图
image_1921 = fields.Image(string="猫猫样例")
- Selection:常值单选,(也称下拉列表)
cat_type = fields.Selection(
[("common", "普通"), ("hardcover", "纯种")],
string="品种类型", index=True, default='common'
)
字段的常用属性:
- string:前端展现时的字段描述,除了Selection和关系字段外,该属性都是出现再字段内的第一个位置,所以最常见的通过位置使用的属性就是该属性.
name = fields.Char(string="猫猫名称")
- default:字段的默认值属性.可以时静态值,也可以是匿名函数lambda
borrowed = fields.Boolean(string="是否被收养", default=False)
- size:仅在Char字段中有效,可用于限制最大字符数,如参数的最大长度
code = fields.Char(size=8)
- compute:通过函数计算来得出值,与 @api.depends(‘xxxx’) 配合使用
computes=fields.Char(string="电话号码数",
required=True,compute="depends_telephone")
#在字段中调用才能生效
@api.depends('telephone')
def depends_telephone(self):
for record in self:
record.computes = len(record.telephone)*10
#将电话的长度*10,并返回
#只看代码用法,不必考虑此代码的逻辑,因为此段代码的业务逻辑是瞎编的
- translate:在Char/Text/Html字段中起作用,使本字段可以被翻译
name = fields.Char(translate=True)
- help:进行前端展示时,发送给用户的提示信息
description = fields.Text(string="内容简介",
help="""向借购买者描述本猫主子内容""")
- readonly,默认位False,如果为True则在前端不可编辑,在模型层通过函数更改数据不会受影响
borrowed = fields.Boolean(string="是否被收养", default=False)
- required:设置为True时表示在前端使用文本字段不可以为空.此项设置对模型有作用,相当在数字库字段进行非空设置,使用函数在模型里写入该字段为空的记录也会受其限制.
name = fields.Char(string="猫猫名称", required=True)
- index:如果设置为True则会在对应的数据库字段上添加索引,会提升该字段进行查询的效率,同时也降低写入数据库表的速度.
variable = fields.Char('Variable', index=True)
- copy:默认非关系字段为True,如设置为False则在复制记录中,该字段不会被复制.
code = fields.Char(string="猫猫编号",copy=False,
help="管理编号,用于快速定位猫猫")
- groups:该字段属性用于限定该字段的访问安全组,通过外部ID进行指定即可访问的安全组,多个外部ID之间可以用逗号隔开.如:groups=‘base.group.group_portal,base.group_uesr’
slide_partner_ids = fields.One2many(
'slide.slide.partner', 'channel_id',
string="Slide User Data",copy=False,
groups='website.group_website_publisher')
- states:该属性是通过字典来设置UI的相关属性,redonly,required和invisible三个属性都可以通过该属性进行设置,比如将该字段设置为只读:states={‘done’:[‘readonly’,True]}
port = fields.Integer(readonly=True,
states={'draft': [('readonly', False)]})
- deprecated:如果设置为True,则一旦使用该字段,就会在日志中记录警告信息.
website_url = fields.Char(string="Website URL",
related='local_url', deprecated=True, readonly=False)
- oldname:如果一个字段在新版本中更改了名字,则可以使用该属性记录老版本的名字,这种设置可以在复制记录时使得老版本的数据字段自动复制到对应的新名字字段.
特殊字段
保留字段
在模型里,有一些字段是系统保留的,作为开发人员不能修改这些字段.
- id:记录唯一的标识
- create_date:记录创建日期
- create_uid:many2one类型,创建该记录的用户
- write_date:记录最后修改的时间
- write_uid:many2one类型,记录最后修改的用户
- _last_upadte:该字段不糊存储值,仅起到并发检查的作用
关联字段
- Many2one(一只猫咪只能在一个猫窝)
shift_ids = fields.Many2one('zertow.shift', string='所在猫窝')
- One2many(一个猫窝可以有多只猫咪,伴随Many2one所存在)
cat_ids = fields.One2many('zertow.cat',
'shift_ids', #注意:这里的shift_ids,与上方Many2one呼应
string="猫咪")
- Many2many(一只猫咪有多个标签,一个标签同样可以附着多只猫咪)
tags_ids = fields.Many2many('zertow.tags', string='猫猫标签')