odoo17开发教程(11):模型之间的关系-多对一

文章目录

摘要:

引言:

正文:

多对一(Many2one)

创建 estate.property.type 模型并添加字段:

upgrade你的模块


摘要:

本文将介绍odoo模型里面的多对一关系关系,many2one。

引言:

上一章介绍了为包含基本字段的模型创建自定义视图。然而,在任何实际业务场景中,我们都需要不止一个模型。此外,模型之间的链接也是必要的。我们可以轻松想象一个模型包含客户,另一个模型包含用户列表。您可能需要在任何现有业务模型上引用客户或用户。

正文:

在我们的房地产模块中,我们需要房地产的以下信息:

  • 购买房产的客户
  • 出售房产的房地产经纪人
  • 房产类型:住宅、公寓、顶层公寓、城堡......
  • 描述房产特征的标签列表:舒适、翻新...
  • 收到的报价清单

到文章的结尾,我们将完成以下功能:

新的 estate.property.type 模型应与相应的菜单、操作和视图一起创建。

Property type

应在 estate.property 模型中添加三个 Many2one 字段:房产类型、买方和卖方。

Property

多对一(Many2one)

在房地产模块中,我们要定义房产类型的概念。例如,房产类型是指房屋或公寓。根据物业类型对物业进行分类是一种标准的业务需求,尤其是为了细化筛选。

一个属性可以只有一种类型,但同一类型可以分配给多个属性。many2one 概念支持这一点。

many2one 是指向另一个对象的简单链接。例如,为了在测试模型中定义一个指向 res.partner 的链接,我们可以这样写:

partner_id = fields.Many2one("res.partner", string="Partner")

按照惯例,many2one 字段的后缀是 _id。这样,访问伙伴中的数据就很容易了:

print(my_test_object.partner_id.name)

创建 estate.property.type 模型并添加字段:

Field

Type

Attributes

name

Char

required

修改我们之前创建的models/estate_property.py

from odoo import models, fields, api
from dateutil.relativedelta import relativedelta

class EstateProperty(models.Model):
    _name = "estate_property"
    _description = "Estate Property"

    def _get_default_date_available(self):
        # 使用 fields.Date.today() 获取当前日期,并添加三个月
        return fields.Date.today() + relativedelta(months=+3)
    
    name = fields.Char(required=True, default="Unknown")
    description = fields.Text()
    postcode = fields.Char()
    date_available = fields.Date(copy=False, default=_get_default_date_available)
    expected_price = fields.Float(required=True)
    selling_price = fields.Float(readonly=True, copy=False)
    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"),
    ])
    active = fields.Boolean(default=True)
    state = fields.Selection([
        ("new", "New"),
        ("offer_received", "Offer Received"),
        ("offer_accepted", "Offer Accepted"),
        ("sold", "Sold"),
        ("canceled", "Canceled"),
    ], default="new", copy=False)
    property_type_id = fields.Many2one("estate_property_type", string="Property Type")

class EstatePropertyType(models.Model):
    _name = "estate_property_type"
    _description = "Estate Property Type"

    name = fields.Char(required=True)

upgrade你的模块

现在你就能看到房产类型的选项了,如何配置房产类型,

我们下一篇我们将介绍多对多,多对一的关系。

上一篇 odoo17开发教程(10):自定义搜索-CSDN博客

下一篇 odoo17开发教程(12):模型之间的关系-多对多many2many_odoo many2many-CSDN博客

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值