zoukankan      html  css  js  c++  java
  • 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)

     先写到这里吧。

  • 相关阅读:
    Nginx中工作进程(work-process)为多少合适?
    Ubuntu中安装启动Nginx
    怎么获得类加载器?
    XML解析方式有哪些?
    HashMap常见面试题
    IO流分类
    集合之间的区别
    css布局2
    css布局1
    css3 总结01
  • 原文地址:https://www.cnblogs.com/jackadam/p/14579797.html
Copyright © 2011-2022 走看看