odoo学习笔记(模型)数据库设置

简介:

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

一:数据模型定义文件

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

二:示例文件的解读

复制代码
 1 # -*- coding: utf-8 -*-
 2 
 3 from odoo import models, fields, api
 4 
 5 
 6 class crud(models.Model):
 7     _name = 'crud.crud'
 8     _description = 'crud.crud'
 9 
10     name = fields.Char()
11     value = fields.Integer()
12     value2 = fields.Float(compute="_value_pc", store=True)
13     description = fields.Text()
14 
15     @api.depends('value')
16     def _value_pc(self):
17         for record in self:
18             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)
复制代码

 

 先写到这里吧。

 

作者:上官飞鸿

出处:https://www.cnblogs.com/jackadam/p/14579797.html

版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。

posted @   上官飞鸿  阅读(328)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示