odoo初学者代码总结–hr.contract
提前声明:本人是odoo萌新,python也只有基础,欢迎大神指点,有所不足之处还请见谅
此为本萌新学习归纳所用,毕竟有输出才有动力,废话不多说,开始:
我们知道,models是具体的模型,里面定义了类与方法,生成了数据库及其所需的字段.由于代码量较大,所以只能分篇来讲述,多的可能几篇都看不完(可能是以为本萌新菜的缘故).
我们先从:models/hr_contract开始读吧:
导入模块
因为代码较多,就不全部展示,我们逐行开始解读吧:首先是头部:
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
from odoo.osv import expression
此部分代码不需要手写,是系统的导入模块当你采用一些odoo自带的方法,功能,函数时,需要的导入路径
继承
我们接着往下看:
class Contract(models.Model):
_name = 'hr.contract'
_description = 'Contract'
_inherit = ['mail.thread', 'mail.activity.mixin']
此处定义了一个Contract的类,
- name = ‘hr.contract’ (后台数据库具体表的名称)
- _description = ‘Contract’(翻译)
- _inherit = [‘mail.thread’, ‘mail.activity.mixin’] (继承)
_inherit拿出来单独讲一下,继承分为:
- 类继承(不会创建新的模型,能够直接修改模型定义,新加的字段会在原表中添加,最重要的是,数据库中没有新的表生成)
- 原型继承(相当于把模型的属性/字段/方法等拷贝了一份,重新创建一个新的模型中,新的表里有原有模型的字段,当然也可以在此基础上添加新的字段/属性/方法)
- 委托继承(只能继承字段,读写原模型的字段)
广告时间:数据参考odoo模型继承与inherit / _inherits / _name 的说明 ,作者分别是(玄机世界)和(零妖大盗) 欢迎大家去翻阅,大神的解释总要比我这个萌新强的多.
本萌新是如此理解的,如果说的不对,还望大神纠正:用大白话来讲:
- 类继承是操作已有的表,如果有新增字段,会直接作用于这张已有的表中.比如阿婆有一个果篮,你拿走苹果,放入香蕉,果篮始终是果篮,变得只是果篮里的水果
- 原型继承是复制拷贝一张表,然后再在这张新表里操作,比如阿婆有一个果篮,你并不想打乱她排放的苹果,于是你买了一个一模一样的果篮,然后在这个新买的一模一样的果篮里操作
- 委托继承原模型的方法并不能被继承.只能继承字段,可以读写子模型的字段,还是那个阿婆和果篮,你只能看到一些水果,并且阿婆不让你动她的果篮,只能看看.
话说回来,此代码用的是原型继承里的多重继承,也就是继承多个表
_inherit = ['mail.thread', 'mail.activity.mixin']
也就表示此表同时继承了mail.thread和mail.activity.mixin
字段
name = fields.Char('Contract Reference', required=True)
active = fields.Boolean(default=True)
此行就是模型的字段,模型的字段有很多种,不止是代码中的Char,和Boolean
常用字段:
- Char/Text:两个都是文本类型,只不过字段长度不一样
- Boolean:布尔值,True/False
- Integer:整数
- Float: 浮点型,可指定显示位数和小数点,digits定义整数部分和小数部分的位数
- Date: 日期型
- Datetime: 日期+时间型
- Binary: 二进制型
- Image:图片
- Selection:常值单选
(引用来自武汉odoo大神的总结,手动@一下OuO)
字段的共同属性
传送门:由于过于专业,在此留下大神已经整理好的文献,以供大家和自己参考,模型中的字段及常用属性,作者(零妖大盗),Odoo 字段基本属性,作者(Leo-Bian),odoo的字段属性,作者(白鲨莎莎)以及(odoo 字段属性)作者(隔壁小红馆)
不过自己还是简单的说一下吧:
- string(在视图中显示的字段名,默认值是字段名)
- required(是否可以为空,默认值False,不填写表示该字段可以为空)
- help(为用户提示信息,没有默认值,不填就不会显示)
- index(是否在数据库上创建数据索引,默认值False,不会创建索引)
- default,(给字段一个默认值)
name = fields.Char('Contract Reference', required=True)
此段代码表示,name是一个文本类型(char),在视图中显示的字段名为Contract Reference,required=True表示该字段不可以为空
active = fields.Boolean(default=True)
此段代码表示,active 是一个布尔值(boolean),default=True表示他的默认值为True
好的,今天的阅读代码到此结束,明天继续阅读,今天的代码并不难,主要讲了一些odoo的基础,这些东西并不要求默写,背诵,用的时候知道在哪里找就好了,用的多了,自然也就记住了.
那,就先读到这里了,感谢大家阅读OuO,我们下篇见