Bootstrap

odoo17开发入门教程(2):创建一个新的模块module

使用docker安装开发环境,再之前的文章中已经讲过了。

下面正式进入odoo的开发之旅。

本章的目的是为创建一个全新的Odoo模块奠定基础。我们将从头开始,以最小的需求让我们的模块被Odoo识别。在接下来的章节中,我们将逐步添加功能,构建一个现实的商业案例。

房地产广告模块

我们的新模块将覆盖一个非常具体的商业领域,因此不包括在标准模块集合中:房地产。值得注意的是,在开发新模块之前,验证Odoo是否已经提供了解决特定商业案例的方法是一个好习惯。

以下是包含一些广告的主列表视图的概览:

List view 01

表格视图顶部区域汇总了属性的重要信息,如名称、房产类型、邮编等。第一个选项卡包含描述房产的信息:卧室、居住面积、车库、花园......

Form view 01

第二个选项卡列出了该房产的出价。在这里我们可以看到,潜在买家可以提出高于或低于预期售价的报价。是否接受报价取决于卖方。

以上是插件的概览,下面正式进入插件的开发

准备插件目录

模块创建的第一步是创建其目录。在addon目录中,添加一个新的文件夹estate。

 一个模块必须包含至少2个文件:manifest.py文件和__init__.py文件。现在,init.py文件可以保持空白,我们将在下一章回到这个问题。另一方面,manifest.py文件必须描述我们的模块,不能保持空白。它唯一要求的字段是名称,但它通常包含更多信息。

以CRM文件为例。除了提供模块的描述(名称、类别、摘要、网站...)外,它还列出了其依赖项(depends)。依赖项意味着Odoo框架将确保这些模块在我们的模块安装之前被安装。此外,如果这些依赖项之一被卸载,那么我们的模块和任何依赖于它的其他模块也将被卸载。想想你最喜欢的Linux发行版包管理器(apt、dnf、pacman...):Odoo的工作方式相同。

manifest.py文件应该只定义我们模块的名称和依赖项。现在唯一必需的框架模块是base。

一个完整的manifest.py文件看起来是下面这样(不用担心看不懂,后面的教程会慢慢讲解,先了解一下就行了)

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

{
    'name': 'CRM',
    'version': '1.2',
    'category': 'Sales/CRM',
    'sequence': 15,
    'summary': 'Track leads and close opportunities',
    'description': "",
    'website': 'https://www.odoo.com/page/crm',
    'depends': [
        'base_setup',
        'sales_team',
        'mail',
        'calendar',
        'resource',
        'fetchmail',
        'utm',
        'web_tour',
        'contacts',
        'digest',
        'phone_validation',
    ],
    'data': [
        'security/crm_security.xml',
        'security/ir.model.access.csv',

        'data/crm_lead_prediction_data.xml',
        'data/crm_lost_reason_data.xml',
        'data/crm_stage_data.xml',
        'data/crm_team_data.xml',
        'data/digest_data.xml',
        'data/mail_data.xml',
        'data/crm_recurring_plan_data.xml',

        'wizard/crm_lead_lost_views.xml',
        'wizard/crm_lead_to_opportunity_views.xml',
        'wizard/crm_lead_to_opportunity_mass_views.xml',
        'wizard/crm_merge_opportunities_views.xml',

        'views/assets.xml',
        'views/calendar_views.xml',
        'views/crm_recurring_plan_views.xml',
        'views/crm_menu_views.xml',
        'views/crm_lost_reason_views.xml',
        'views/crm_stage_views.xml',
        'views/crm_lead_views.xml',
        'views/digest_views.xml',
        'views/mail_activity_views.xml',
        'views/res_config_settings_views.xml',
        'views/res_partner_views.xml',
        'views/utm_campaign_views.xml',
        'report/crm_activity_report_views.xml',
        'report/crm_opportunity_report_views.xml',
        'views/crm_team_views.xml',
    ],
    'demo': [
        'data/crm_team_demo.xml',
        'data/mail_activity_demo.xml',
        'data/crm_lead_demo.xml',
    ],
    'css': ['static/src/css/crm.css'],
    'installable': True,
    'application': True,
    'auto_install': False
}

重启Odoo服务器,进入Apps。点击更新应用列表,搜索estate然后……,你的模块出现了!没有出现吗?也许尝试移除默认的‘Apps’过滤器;-)

创建完manifest.py文件和__init__.py文件后将会看到如图所示的模块:

The new module appears in the list

提示:

记得启用开发者模式,如前一章所解释的。否则你将看不到更新应用列表按钮。

 很棒!你已经成功了第一步!

上一篇文章 odoo17开发入门教程(1)了解架构

下一篇文章 odoo17开发教程(3):详解__manifest__.py文件_odoo 17开发文档-CSDN博客

;