重写Odoo(三)odoo 数据库结构
作者:互联网
简介:
数据库设置这个就没什么可说的,你没数据库,准备玩什么?
一:数据模型定义文件
根据上一篇笔记,数据库模型的配置是在新模块的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