ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

重写Odoo(三)odoo 数据库结构

2022-07-10 08:32:42  阅读:262  来源: 互联网

标签:name record fields odoo crud Field Odoo 重写 class


简介:

数据库设置这个就没什么可说的,你没数据库,准备玩什么?

一:数据模型定义文件

根据上一篇笔记,数据库模型的配置是在新模块的models/models.py文件。

二:示例文件的解读

# -*- coding: utf-8 -*-

from odoo import models, fields, api


class crud(models.Model):
    _name = 'crud.crud'
    _description = 'crud.crud'

    name = fields.Char()
    value = fields.Integer()
    value2 = fields.Float(compute="_value_pc", store=True)
    description = fields.Text()

    @api.depends('value')
    def _value_pc(self):
        for record in self:
            record.value2 = float(record.value) / 100

第一行:utf-8编码,没啥解释的

第三行:导入models,fields,api

第六行:定义一个模型(可以理解为一个表)名字是crud,继承models.Model
第七行:_name定义了应用模块在odoo系统中的名字

第八行:_description,应用模块的描述

10-13:定义了一些字段

十五行:定义了一个计算函数,来定义value2,和store配合使用,

三:扩展模型,增加自己的字段

odoo有如下字段类型

class Boolean(Field)  #布尔
class Integer(Field)   #整型
class Float(Field)       #浮点
class Monetary(Field)  #货币?
class Char(Field)       #文本
class Text(Field)        #多行文本
class Html(Field)       #html富文本
class Date(Field)       #日期
class Datetime(Field)   #时间
class Binary(Field)       #二进制
class Image(Binary)      #图片基于二进制
class Selection(Field)    #选择
class Reference(Selection)   #基于选择

class Many2one    #关系多对一
class One2many   #关系一对多
class Many2many  #关系多对多

四:保留字段

odoo会自动创建如下字段方便管理。

id                        表主键             整型
create_date         创建时间           时间
create_uid              创建用户           多对一
write_date           最后修改时间     时间
write_uid             最后修改用户    多对一

还有自动处理会使用的保留字段

active    记录可见性         布尔
name    记录名               字符串

记录可见性,这个可以设置为False,即不显示该记录,归档,伪删除会用的。

name,在打开某条记录后,显示的记录名字,如果不设,打开后你就不知道是哪条记录了。

五:字段属性:

属性名 值类型 默认值 说明
string 字符串 字段名 视图中显示的字段标签
required 布尔 False 是否可以为空
help 字符串 视图中显示的字段帮助信息
index 布尔 False 是否建立索引  

 default:设置默认值

gender = fields.Selection(
    [("1", "男性"), ("2", "女性"), ("3", "人妖")],
    string="性别", default="1"
)
active = fields.Boolean(string="信息是否有效", default=True)

compute:计算属性

bmi是根据体重/身高*身高计算的。

class personal(models.Model):
    _name = 'crud.personal'
    _description = 'personal_info'

    name = fields.Char(string='姓名')
    height = fields.Float(string='身高(m)', help='以米为单位')
    weight = fields.Float(string='体重(kg)', help='以公斤为单位')
    bmi = fields.Float(compute='_count_bmi', store=True)

    @api.depends('height', 'weight')
    def _count_bmi(self):
        for record in self:
            record.bmi = float(record.weight) / (record.height * record.height)

 

标签:name,record,fields,odoo,crud,Field,Odoo,重写,class
来源: https://www.cnblogs.com/jackadam/p/16462514.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有