前言

前面我们详细讲解了odoo ORM中fields中的常见属性的使用,根据不同的属性可以对字段进行不同的限制操作,比如readonly只读,store是否存储到数据库。今天我们继续研究ORM中的关系映射有哪些。

class odoo.fields. Integer(常用)

  • Integer会映射成int类型数据。
  • 无其它特别的属性用法。

class odoo.fields. Binary

  • 封装存储二进制数据
  • 特有属性
    • class odoo.fields. Binaryattachment default为True,不会存储到数据库中,如果为False则会在数据库中创建指定的字段。

class odoo.fields. Html

  • xml中的表现是在页面中生成一个富文本编辑器。
  • 特有属性(没做过具体研究)
    • sanitize。默认值为True。
    • sanitize_tags。默认值为True。
    • sanitize_attributes。默认为True。
    • sanitize_style。默认值为False。
    • strip_style。默认值为False。
    • strip_classes。默认值为False。

class odoo.fields. Image

  • 封装图像,是Binary类型的扩展。
  • 特有属性
    • max_width。图像的最大宽度。
    • max_height。图像的最大高度。
    • verify_resolution。是否验证分辨率,使其不超过它最大的分辨率限制。

class odoo.fields. Monetary(常用)

  • float的扩展类型,经常使用在价格相关的字段上,配合外键res_currency一起使用。

  • 特有属性

    • currency_field。需要配置外键字段res_currency一起使用
# currency_field是一个Str类型的数据
fandx_price = fields.Monetary(string='fandx_price', currency_field='currency_id', required=True, readonly=True) # Many2one for res.currency
currency_id = fields.Many2one('res.currency', 'Currency', required=True, readonly=True)

class odoo.fields. Selection(常用)

  • 封装多选字段,一般最常用的在封装state状态字段的时候。

  • 特有属性

    • selection。用来定义可选的内容
    • selection_add。用于继承之前定义好的selection进行扩展可选内容。
    • ondelete。在数据删除的时候会触发,这里传的是一个字典类型数据,如果指定内容被删除,那么会重新进行数据的映射
    # 所有状态为未审核的字段,如果0被删除了,那么这部分会自动变成未知状态。
    fandx_state = fields.Selection(selection=[("0", "未审核"),("1", "已审核")], ondelete={"0": "未知状态"})

class odoo.fields. Text

  • 和Char类型相似,但是可以存储更多的字符容量。
  • 特有属性
    • translate。是否翻译,开启翻译会自动翻译成当前配置的语言。

class odoo.fields. Date | DateTime(常用)

  • Date和Datetime属性也是非常常用的映射字段,主要用来表示时间。
  • Odoo中所有的时间处理用的也是python自带的datetime的方法,所以这里不去细讲解。
  • 特有属性
    • start_of。设置开始时间
    • end_of。设置结束时间
    • add。添加指定时间
    • subtract。减去指定时间

odoo ORM中的filed的关系映射的使用详解1的更多相关文章

  1. laravel orm 中的一对多关系 hasMany

    个人对于laravel orm 中对于一对多关系的理解 文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论. 在 comm ...

  2. Python的Django框架中forms表单类的使用方法详解

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  3. Node.js中的不安全跳转如何防御详解

    Node.js中的不安全跳转如何防御详解 导语: 早年在浏览器大战期间,有远见的Chrome认为要运行现代Web应用,浏览器必须有一个性能非常强劲的Java引擎,于是Google自己开发了一个高性能的 ...

  4. 转载~kxcfzyk:Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解

    Linux C语言多线程库Pthread中条件变量的的正确用法逐步详解   多线程c语言linuxsemaphore条件变量 (本文的读者定位是了解Pthread常用多线程API和Pthread互斥锁 ...

  5. Android中Intent传值与Bundle传值的区别详解

    Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...

  6. ORACLE中RECORD、VARRAY、TABLE的使用详解(转)

    原文地址:ORACLE中RECORD.VARRAY.TABLE的使用详解

  7. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  8. 对python3中pathlib库的Path类的使用详解

    原文连接   https://www.jb51.net/article/148789.htm 1.调用库 ? 1 from pathlib import 2.创建Path对象 ? 1 2 3 4 5 ...

  9. Oracle中的SQL分页查询原理和方法详解

    Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006

随机推荐

  1. 【NX二次开发】Block UI 操作按钮

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  2. python学习笔记05-条件分支与循环1

    思考问题:100分制,90分以上为A,80-90为B,60-80为C,60以下为D,当用户输入成绩后,打印对应的字母 temp=input('请输入你的成绩:') score=int(temp) if ...

  3. ElGamal算法

    简介 ElGamal算法可以用于加密和签名,其安全性依赖于计算有限域上离散对数的难度. ElGamal密钥 生成密钥对时,首先选择素数p,两个随机数g和x,g和x都小于p,然后计算: y = g ^ ...

  4. IDEA2020.2版本设置类和方法的自定义注释模板

    IDEA是目前普遍使用的Java开发编辑器,添加自定义的注释模板,一方面便捷好用,另外一方面可以规范开发.IDEA中设置模板分两种:1.创建Java类的注释,2.方法的注释. 一.Java类的注释模板 ...

  5. Winform中用户自定义控件中外部设置子控件属性的方法

    假设我们新建立一个用户自定义控件,由一个lable1和pictureBox1组成 此时我们在外部调用该控件,然后想动态改变lable1的值,我们该怎么办? 假设实例化的用户控件名为UserContro ...

  6. 无法在源“”处找到包“entityframework”

    当在程序包管理器控制台安装ef时出现这个 出现这种情况可能是程序包源不对 我的是由于之前项目的源有一个内网平台的,把这个取消勾选就能安装成功了 上图设置路径为工具-NuGet包管理器-管理解决方案的N ...

  7. Lc_704二分查找

    package com.example.leetcode2; import java.util.*; /** * @description: 704. 二分查找 * 给定一个 n 个元素有序的(升序) ...

  8. Mysql在线DDL

    1.  Mysql各版本DDL方式 1.1 MysqlDDL演进 当mysql某个业务表上有未提交的活动事务的时候,你去执行在线DDL,这相当危险,直接会被卡住,show processlist里面会 ...

  9. 温故知新,CSharp遇见异步编程(Async/Await),聊聊异步编程最佳做法

    什么是异步编程(Async/Await) Async/Await本质上是通过编译器实现的语法糖,它让我们能够轻松的写出简洁.易懂.易维护的异步代码. Async/Await是C# 5引入的关键字,用以 ...

  10. Ubuntu18.04 LTS x64 构建ARM交叉编译环境(尝试,但失败了!!!估计是编译器没选对)

    [测试而已,由于需要了解编译器和处理器体系,因此先放弃该方法] 动机 入门嵌入式开发,又需要 Windows 又需要 Linux,但资料给的竟然是 Ubuntu9,导致我不能使用 VSCode Rem ...