当前位置:   article > 正文

odoo初学者代码总结–hr.contract 导入模块/继承/字段/字段属性(3)_odoo怎么进入代码模块

odoo怎么进入代码模块

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

此部分代码不需要手写,是系统的导入模块当你采用一些odoo自带的方法,功能,函数时,需要的导入路径

继承

我们接着往下看:

class Contract(models.Model):
    _name = 'hr.contract'
    _description = 'Contract'
    _inherit = ['mail.thread', 'mail.activity.mixin']
  • 1
  • 2
  • 3
  • 4

此处定义了一个Contract的类,

  • name = ‘hr.contract’ (后台数据库具体表的名称)
  • _description = ‘Contract’(翻译)
  • _inherit = [‘mail.thread’, ‘mail.activity.mixin’] (继承)

_inherit拿出来单独讲一下,继承分为:

  1. 类继承(不会创建新的模型,能够直接修改模型定义,新加的字段会在原表中添加,最重要的是,数据库中没有新的表生成)
  2. 原型继承(相当于把模型的属性/字段/方法等拷贝了一份,重新创建一个新的模型中,新的表里有原有模型的字段,当然也可以在此基础上添加新的字段/属性/方法)
  3. 委托继承(只能继承字段,读写原模型的字段)

广告时间:数据参考odoo模型继承inherit / _inherits / _name 的说明 ,作者分别是(玄机世界)和(零妖大盗) 欢迎大家去翻阅,大神的解释总要比我这个萌新强的多.

本萌新是如此理解的,如果说的不对,还望大神纠正:用大白话来讲:

  • 类继承是操作已有的表,如果有新增字段,会直接作用于这张已有的表中.比如阿婆有一个果篮,你拿走苹果,放入香蕉,果篮始终是果篮,变得只是果篮里的水果
  • 原型继承是复制拷贝一张表,然后再在这张新表里操作,比如阿婆有一个果篮,你并不想打乱她排放的苹果,于是你买了一个一模一样的果篮,然后在这个新买的一模一样的果篮里操作
  • 委托继承原模型的方法并不能被继承.只能继承字段,可以读写子模型的字段,还是那个阿婆和果篮,你只能看到一些水果,并且阿婆不让你动她的果篮,只能看看.

话说回来,此代码用的是原型继承里的多重继承,也就是继承多个表

_inherit = ['mail.thread', 'mail.activity.mixin']
  • 1

也就表示此表同时继承了mail.threadmail.activity.mixin

字段

name = fields.Char('Contract Reference', required=True)
active = fields.Boolean(default=True)
  • 1
  • 2

此行就是模型的字段,模型的字段有很多种,不止是代码中的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)
  • 1

此段代码表示,name是一个文本类型(char),在视图中显示的字段名为Contract Reference,required=True表示该字段不可以为空

active = fields.Boolean(default=True)
  • 1

此段代码表示,active 是一个布尔值(boolean),default=True表示他的默认值为True

好的,今天的阅读代码到此结束,明天继续阅读,今天的代码并不难,主要讲了一些odoo的基础,这些东西并不要求默写,背诵,用的时候知道在哪里找就好了,用的多了,自然也就记住了.

那,就先读到这里了,感谢大家阅读OuO,我们下篇见

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号