首页 > 其他 > 详细

odoo中字段列举

时间:2021-03-28 12:57:56      阅读:24      评论:0      收藏:0      [点我收藏+]

Odoo常见字段

odoo中的常用字段,没有其他花哨的操作。

  • Char:Char用于字符串
  • Text:Text用于多行字符串值
  • Html:类似于Text的多选字符串值,但通常用于以HTML格式存储的富文本 
  • Boolean:Boolean存储布尔值,True/False。
  • Integer:Integer字段存储整型值。
  • Binary:Binary字段存储二进制文件,例如图像或文档。 

 

Selection

Selection用于选择列表。这是一个包含多个集合(每个集合中包含一个值和一个描述)的列表。所选择的值存储于数据库中,可以是字符串或整数。

Selection可以使用整型的健,但应注意odoo内部将0解释为未设置,不会显示存储值为0的描述。

Selection字段还接收一个函数引用来替代列表作为selection属性。这允许动态生成选项列表。

正常使用示例

state = fields.Selection([("draft", "草稿"), ("to_audit", "待审核"), ("audited", "已审核")], default="draft", string="状态")

动态生成选项列表示例

def gnrt_score(self):
    score_list = []
    for i in range(1, 11):
        score_list.append((str(i), str(i)))
    return score_list

score = fields.Selection(selection="gnrt_score", string="评分", help="评分应在1-10之间")

 

Float

Float字段存储浮点型数值。精度可由位数和小数位位数对来定义。 

length = fields.Float(string="长度", digits=(8, 3))。# 总长度为8位,小数位占3位

用户可以自定义浮点字段的精度,具体方法可参考我的另一篇博客:odoo之技巧合集一-使用可配置精度的浮点字段

 

Monetary

Monetary字段可存储某个币种的数量值。

使用示例

currency_id = fields.Many2one("res.currency", string="Currency")
retail_price = fields.Monetary(string="Retail Price", currency_field=currency_id)

<field name="currency_id" />
<field name="retail_price" />

 

Reference

引用字段,可以实现让用户自定义要引用的模型和记录。

@api.model  # 在模型级别而不是记录集级别上进行操作
def _referencable_models(self):
    models = self.env[ir.model].search([])
    print("models:", models)
    return [(x.model, x.name) for x in models]

ref_doc_id = fields.Reference(selection=_referencable_models, string="Reference Document")

 

Date

Date存储日期值。它在数据库中以日期进行存储。ORM中以Python date对象的形式对其进行处理。所使用的格式在odoo.fields.DATE_FORMATE中定义。

Date字段对象的一些非常方便的工具方法:

  • fields.Date.to_date(string_value将字符串解析为?个date对象。
  • fields.Date.to_string(date_value)将Date对象表示为字符串。
  • fields.Date.today()以字符串格式返回当前?期。这适合?于默认值。
  • fields.Date.context_today(record, timestamp)根据记录(或记录集)上下?的时区以 字符串格式返回时间戳的?期(或者在省略时间戳时返回当天)。

 

Datetime

Datetime字段用于日期时间值。在数据库中以原生UTC时间datetime进行存储。ORM中以Python datetime对象的形式对其进行处理。所使用的格式在odoo.field.DATETIME_FORMATE中定义。

Datetime字段对象的一些非常方便的工具方法:

  • fields.Datetime.to_datetime(string_value)将字符串解析为datetime对象。
  • fields.Datetime.to_string(datetime_value)将datetime对象表示为字符串。
  • fields.Datetime.now()以字符串格式返回当天及当前时间。它适合?作默认值。
  • fields.Datetime.context_timestamp(record, timestamp)将时间戳原?datetime按照记 录上下?的时区转化为对应时区。它不适合?作默认值,但是在向外部系统发送数据等 操作时可以使?。

 

多对多字段 

Many2one

多对一字段,Many-to-one字段向模型的数据表中添加了?列,存储关联记录的数据库ID。在数据库级别
上,还会创建外键约束,确保保存的ID是对关联表中记录的有效引? 。对这些关联字段不会 创建数据库索引,但这可通过添加 index=True 属性来进?完成。

publisher_id = fields.Many2one("res.partner", string="Publisher", ondelete="set null", context={}, domain=[], index=True)

 

One2many

一对多字段,One-to-many字段是many-to-one的反向关联,虽然one2many字段像其它字段?样添加在模型中,但在数据库中并没有实际的体现。他们仅是编程捷径,启?数据库视图来展现这些关联记录列表。

published_book_ids = fields.One2many("library.book", "publisher_id", string="Published Book")

 

Many2many

多对多字段,Many-to-many关联也不会向模型数据表添加列。这类关联在数据库中使?中间关联表进? 体现,其中有两列分别存储这两个关联的ID。
Odoo?动处理这?关联表的创建。关联表的名称默认使?两个关联模型名按字?排序加上?
个_rel后缀来创建。但我们可以使?relation属性来进?覆盖。

authored_book_ids = fields.Many2many("library.book", relation="author_book_rel", column1="authored_book_ids", 
column2="author_ids", string="authored books")

column1:这是连接这个模型的关联表中的Many2one字段的名称
column2:这是在关联数据表中连接comodel的Many2one字段的名称

 

 

Odoo默认添加字段与特殊字段

Odoo默认添加字段

有些字段在odoo模型中默认添加,因此我们不应在字段中使用这些名称。这些是记录自动生成的标识符的id字段以及一些审计日志字段,如下所示:

  • create_date是记录创建的时间戳
  • create_uid是创建该记录的?户
  • write_date是最近记录的编辑时间戳
  • write_uid是最后编辑记录的?户

这些?志字段的?动创建可通过设置模型属性_log_access=False来进?禁?。

 

特殊字段:active

它应是布尔型字段,允许?将记录标记为?活跃 (inactive)。它的定义如下:

active = fields.Boolean(Active, default=True)

默认只有将active设置为True的记录才可?。要获取隐藏字段,我们需要使?域过滤器[(‘activ e’, ‘=’, False)]。?如果向环境上下?添加了’active_test’: False 值,ORM则不会过滤掉?活跃记录。

在有些情况下,你可能不能修改上下?来获取活跃及?活跃记录。这时,可以使? [‘|’, (‘active’, ‘=’, True), (‘active’, ‘=’, False)] 域。 注意:[(‘active’, ‘in’ (True, False))]可能不会如你所预期那样。Odoo在域中显式地查找(‘active’, ‘=’, False)语句。它默认会限制仅搜索活跃记录。

 

odoo中字段列举

原文:https://www.cnblogs.com/yifchan/p/14279736.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!