odoo模型内置函数(增删改查)细解

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
 
  

执行时间:点击创建-保存时执行

odoo模型内置函数(增删改查)细解_第1张图片

odoo模型内置函数(增删改查)细解_第2张图片

 

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开发者们能共享更多的开发知识。

你可能感兴趣的:(odoo开发,python)