odoo(六):自建应用入门—模型和基本字段

在上一节中我们已经创建了一个基本的odoo应用,此时它仍然是一个空壳,不允许我们存储任何数据。在我们的房地产模块中,我们希望将与房产相关的信息(名称、描述、价格、居住面积……)存储在数据库中。Odoo 框架提供了促进数据库交互的工具。

前提:确保estate模块已安装

对象关系映射(ORM)

Odoo 的一个关键组件是ORM层。该层避免了必须手动编写大多数SQL 并提供可扩展性和安全服务2

业务对象被声明为 Python 类扩展 Model,这将它们集成到自动化持久性系统中。

可以通过在定义中设置属性来配置模型。最重要的属性是 _name,它是必需的,它定义了 Odoo 系统中模型的名称。这是模型的最低定义:

from odoo import models
 
 
class EstateProperty(models.Model):
    _name = 'estate.property'
 

这个定义足以让 ORM 生成一个名为estate_property的表。 该模型中的.会被ORM中的_name自动转换成_

模型字段

这里只是一些本模块用到的字段,详细内容后面会有更加详细的说明

字段类型

  • 简单字段:直接存储在模型表中的值
  • 关系字段:用于连接(相同或不同模型)记录

该模块中用到的字段

字段名 类型 字段名 类型
name Char facades Integer
description Text living_area Float
postcode Char garage Boolean
date_availability Date garden Boolean
expected_price Integer garden_area Integer
selling_price Integer balcony_orientation Selection
bedrooms Integer last_seen Datetime

通用属性

就像模型本身一样,可以通过将配置属性作为参数传递来配置字段:

name = field.Char(string="名称", required=True)

某些属性可用于所有字段,以下是最常见的属性:

  • string(str, 默认:字段名称):UI 中字段的标签(用户可见)
  • required(bool, 默认: False):如果设置为True,该字段不能为空,它必须具有默认值或始终被赋予一个值
  • help(str, 默认: ''):在 UI 中为用户提供长格式的帮助工具提示。
  • index(bool, 默认: False):创建数据库索引

自动字段

模型的一些未定义过的字段。Odoo 在所有模型创建了一些字段。这些字段由系统管理,无法写入,但如果有用或必要,可以读取它们:

  • idid,模型记录的唯一标识符
  • create_dateDatetime,记录的创建日期
  • create_uidMany2one,创建记录的用户
  • write_dateDatetime,记录的最后修改日期
  • write_uidMany2one,最后修改记录的用户

代码

代码

my_addons\estate_test\models\estate_property.py

from odoo import models, fields


class EstateProperty(models.Model):
    _name = 'estate.property'
    _description = '房地产广告模块'  # 模型提示

    name = fields.Char(string='name', required=True, default="Unknown")
    description = fields.Text(string='description')
    postcode = fields.Char(string='postcode')
    date_availability = fields.Date(string='data')  # 2021-12-21
    expected_price = fields.Float(string='expected_price')
    selling_price = fields.Float(string='selling_price')
    bedrooms = fields.Integer(string='bedrooms')
    living_area = fields.Integer(string='living_area')
    facades = fields.Integer(string='facades')
    garage = fields.Boolean(string='garage')
    garden = fields.Boolean(string='garden')
    garden_area = fields.Integer(string='garden_area')
    balcony_orientation = fields.Selection([('East', 'East'),
                                            ('South', 'South'),
                                            ('West', 'West'),
                                            ('North', 'North')],
                                           string='garden_orientation')
    last_seen = fields.Datetime("last_seen", default=lambda self: fields.Datetime.now())

my_addons\estate_test\models\__init__.py

from . import estate_property

my_addons\estate_test\__init__.py

from . import models

查看模型信息

前提:已激活开发者模式

升级模块--->在设置页面--->技术 ---> 模型 ---> 搜索estate.property ---> 查看模型信息

posted @ 2021-12-21 13:41  pure3417  阅读(331)  评论(0)    收藏  举报