设为首页 加入收藏

TOP

odoo 开发入门教程系列-模型之间的关系(Relations Between Models)(一)
2023-07-23 13:43:40 】 浏览:90
Tags:odoo 程系列 关系 Relations Between Models

模型之间的关系(Relations Between Models)

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

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

  • 购买房产的客户
  • 出售房产的真实重述代理人
  • 房产类型:房子、公寓、顶层公寓、城堡…
  • 显示了该酒店特色的一系列标签:舒适、翻新…
  • 收到的报价清单

Many2one

参考: 本主题相关文档可查阅 Many2one

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

一个房产可以有一个类型,但同一类型可以分配给多个房产。这得到了many2one概念的支持。

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

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

按约定,many2one 字段以_id 后缀。可通过以下方式轻松的访问partner中的数据:

print(my_test_object.partner_id.name)

参见

foreign keys

练习1

添加房地产类型表

  • 创建estate.property.type 模型,并添加以下字段:
Field Type Attributes
name Char required
  • 添加菜单

  • 添加property_type_idestate.property 模型和表单,树,搜索视图

该练习是对前几章很好的扼要重述:你需要创建一个 model,设置 model,添加 动作和菜单,并且创建视图.

提示: 别忘记在 __init__.py导入新的Python模块文件,并在__manifest.py__中添加数据或者访问权限。

新增odoo14/custom/estate/models/estate_property_type.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from odoo import models, fields

class EstatePropertyType(models.Model):
    _name = 'estate.property.type'
    _description = 'estate property type'

    name = fields.Char(string='type', required=True)

修改odoo14/custom/estate/models/__init__.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from . import estate_property
from . import estate_property_type # 新增内容

修改odoo14/custom/estate/security/ir.model.access.csv

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_estate_model,access_estate_model,model_estate_property,base.group_user,1,1,1,1
access_estate_property_type_model,access_estate_property_type_model,model_estate_property_type,base.group_user,1,1,1,1

修改odoo14/custom/estate/views/estate_menus.view

<?xml version="1.0"?>
<odoo>
    <menuitem id="test_menu_root" name="Real Estate">
        <menuitem id="test_first_level_menu" name="Advertisements">
            <menuitem id="estate_property_menu_action" action="link_estate_property_action"/>
        </menuitem>
        <menuitem id="property_type_first_level_menu" name="Settings">
            <menuitem id="property_type_action" action="estate_property_type_action"/>
        </menuitem>
    </menuitem>
</odoo>

新增odoo14/custom/estate/views/estate_property_type_views.xml

<?xml version="1.0"?>
<odoo>
    <record id="estate_property_type_action" model="ir.actions.act_window">
        <field name="name">Property Types</field>
        <field name="res_model">estate.property.type</field>
        <field name="view_mode">tree,form</field>
    </record>

    <record id="estate_property_type_view_tree" model="ir.ui.view">
        <field name="name">estate.property.type.tree</field>
        <field name="model">estate.property.type</field>
        <field name="arch" type="xml">
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇关于python 的if __name__ == &qu.. 下一篇scoket用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目