from odoo import api, fields, models
class ArticleAuthor(models.Model):
_name = 'internet_literature.article.author'
_description = '网文作者名称'
name = fields.Char(string="姓名", required=True, index=True, help='作者名称,不允许重复')
age = fields.Char(string="年龄",help="作者年龄", default=20)
sign_text = fields.Text(string='个性签名', help='个性签名')
book_ids = fields.One2many(string='作品',comodel_name='internet_literature.book',
inverse_name='author_id') # 作者所写的书籍
description = fields.Text(string='作者简介', compute='_get_default_description')
@api.depends('name', 'name', 'book_ids')
def _get_default_description(self):
for record in self:
record.description='大神作者{}'.format(record.name)
for book in record.book_ids:
record.description += book.name
先定义了一个模型类ArticleAuthor,函数作用演示,围绕这个模型进行。
这篇博文主要面向对象为odoo初学者,详细讲讲模型内各个函数的作用。
1、create函数:(增)
@api.model
def create(self, vals_list):
"""
作用:记录创建方法。创建记录的orm函数。页面新建点击保存时触发调用。返回值为创建成功的记录集
self:模型对象
vals_list:页面数据列表,即要插入数据库中一条完整的数据列表,
return: 返回模型对象,此处为ArticleAuthor对象,数据创建完成
"""
article_author_obj = super(ArticleAuthor, self).create(vals_list)
# 调用odoo自定义的create方法创建ArticleAuthor对象
return article_author_obj
执行时间:点击创建-保存时执行
2、write函数:(改)
def write(self, values):
"""
作用:修改记录时使用
values:修改页面的数据列表
return:修改成功则返回True,失败则返回False
"""
res = super(ArticleAuthor, self).write(values)
return res
3、unlink函数:(删)
def unlink(self):
"""
作用:删除记录
return:删除成功则返回True,失败则返回False
"""
res = super(ArticleAuthor, self).unlink()
return res
4、read,search,和search_read函数(查)
read:
def read(self, fields=None, load='_classic_read'):
"""
作用:读取一条数据
fileds:读取条件,即读取对应的数据字段
return: 返回读取的数据列表
"""
res = super(ArticleAuthor, self).read(['name', 'age'])
# 读取数据时只获得name和age字段的值
print(res)
return res
res的打印内容
search函数:一般不重写search。此处介绍使用方法及参数作用:
search([
('name', '=', attachment_name),
('res_model', '=', self.model),
('res_id', '=', record.id)
], limit=1)
第一个列表为domain,limit为输出一条数据,更多参数请详细研究odoo源码
search_read函数
search_read(domain,fileds)
# domain 查询条件
# fields 显示的字段name
如上为一个初学者所整理的资料,如有偏差,还望大佬们斧正,也希望odoo开发者们能共享更多的开发知识。