第3章:模型和基本字段

第 3 章:模型和基本字段

在上一章的结尾,我们能够创建Odoo模块。然而,在这一点上,它仍然是一个空壳,不允许我们存储任何数据。在我们的real estate模块中,我们想要存储与属性(名称、描述、价格、居住面积等)。Odoo 框架提供工具来促进数据库交互。

 

在继续练习之前,请确保已安装模块,即它必须在 Apps 列表中显示为 'Installed'。

 

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

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

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

from odoo import models

 

class TestModel(models.Model):

_name = "test_model"

 

此定义足以让ORM生成名为test_model的数据库表。约定所有模型都位于models目录中,每个模型都在其自己的Python文件。

 

字段用于定义模型可以存储的内容以及存储位置。字段在model类中定义为 attributes:

from odoo import fields, models

 

class TestModel(models.Model):

    _name = "test_model"

    _description = "Test Model"

 

name = fields.Char()

 

该name字段是一个Char,它将表示为Python unicode str和SQL VARCHAR。

字段分为两大类:“简单”字段,它们是原子的直接存储在模型表中的值,和“关系”字段用来链接记录(相同或不同模型)。

简单的字段示例包括Boolean,Float,Char,Text,Date和Selection。

我们的表estate_property(房产属性)需要以下这些字段:

Field

Type

name

Char

description

Text

postcode

Char

date_availability

Date

expected_price

Float

selling_price

Float

bedrooms

Integer

living_area

Integer

facades

Integer

garage

Boolean

garden

Boolean

garden_area

Integer

garden_orientation

Selection

garden_orientation该字段必须有4个可能的值:“North”、“South”、“East” 和“West”。

你可以使用下面的代码真正创建一个estate_property表,新建models/estate_property.py:。

from odoo import models, fields, api

 

class EstateProperty(models.Model):

    _name = "estate_property"

    _description = "Estate Property"

    name = fields.Char(required=True)

    description = fields.Text()

    postcode = fields.Char()

    date_available = fields.Date()

    expected_price = fields.Float(required=True)

    selling_price = fields.Float()

    bedrooms = fields.Integer()

    living_area = fields.Integer()

    facades = fields.Integer()  # 外墙

    garage = fields.Boolean()

    garden = fields.Boolean()

    garden_area = fields.Integer()

    garden_orientation = fields.Selection([

        ("north", "North"),

        ("south", "South"),

        ("east", "East"),

        ("west", "West"),

])

 

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

string (str,默认值:字段名称)

UI 中字段的标签(对用户可见)。

required (bool默认值:False)

如果为True,则字段不能为空。它必须具有默认值,或者在创建记录时始终被赋予一个值。

help (str默认值:'')

在 UI 中为用户提供帮助提示。

index (bool默认值:False)

请求 Odoo 在列上创建数据库索引。

 

您可能已经注意到,您的模型有一些您从未定义的字段。Odoo在所有模型中创建一些字段。这些字段是由系统管理,无法写入,但如果有用或必要,则可以读取它们:

id (Id)

模型记录的唯一标识符。

create_date (Datetime)

记录的创建日期。

create_uid (Many2one)

创建记录的用户。

write_date (Datetime)

记录的上次修改日期。

write_uid (Many2one)

上次修改记录的用户。

 

以下是我们现在的文件结构:

addons/estate

├── models

│   ├── estate_property.py

│   └── __init__.py

├── __init__.py

└── __manifest__.py


models/__init__.py:

from . import estate_property

estate/__init__.py:

from . import models

最后重启你的Odoo。使用数据库管理软件,例如pgadmin4,就能看到你新创建的表啦!

如果还看不到,找到你的模块,点击Upgrade。

第3章:模型和基本字段
谢潮聪 2024年11月26日
分析这篇文章

存档
登录 留下评论
第2章:新应用程序