zoukankan      html  css  js  c++  java
  • odoo基础学习笔记1

    odoo学习

    刚开始仿照已有知识django框架学习,发现相同和不同。

    第一个 odoo项目

    下载odoo源代码,新建属于自己的模块,至少包含上述文件。

    首先在odoo.conf中配置数据库相关信息,

    强调一下:加载文件目录

    addons_path = F:/odoo-14.0/addons, F:/odoo-14.0/my_addons/covid_w

    就可以在model中建立属于你的模块

    这里以covid_w.py为例

     1 from odoo import api, fields, models
     2 
     3 class CovidW(models.Model):
     4     _name = 'covid.w'
     5 
     6     name = fields.Char(string='姓名')
     7     date = fields.Date(string='确诊日期')
     8     state = fields.Char(string='')
     9     city = fields.Char(string='')
    10     county = fields.Char(string='区/县')
    11     street = fields.Char(string='具体地址')
    12     ill_type = fields.Char(string='感染方式')
    13     within_or_abroad = fields.Selection([('within', '境内'), ('abroad', '境外')], string='境内/境外感染')
    14     is_ill = fields.Boolean(string='是否确诊')
    15     begin_lsolation_date = fields.Date(string="起始隔离日期")
    16     lsolation_mode = fields.Selection([('home', '居家隔离'), ('focus', '集中隔离')], string="隔离方式")
    17     create_user_id = fields.Many2one('res.users', string='填报人')
    covid_w.py

    配置好py文件以后要新建xml文件布局,类比成django的前端html?(我看着像,欢迎指正)

    xml文件以模块名_view命名,

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <odoo>
     3     <record id="covid_w_tree_view" model="ir.ui.view">
     4         <field name="name">疫情记录</field>
     5         <field name="model">covid.w</field>
     6         <field name="arch" type="xml">
     7             <tree>
     8                 <field name="name"/>
     9                 <field name="date"/>
    10                 <field name="state"/>
    11                 <field name="city"/>
    12                 <field name="county"/>
    13                 <field name="street"/>
    14                 <field name="ill_type"/>
    15                 <field name="within_or_abroad"/>
    16             </tree>
    17         </field>
    18     </record>
    19     <record id="covid_w_tree_view" model="ir.ui.view">
    20         <field name="name">疫情记录</field>
    21         <field name="model">covid.w</field>
    22         <field name="arch" type="xml">
    23             <form>
    24                 <sheet>
    25                     <group>
    26                         <group>
    27                             <field name="name" string="姓名" required="1"/>   <!-- required="1" 此项设置为必填项-->
    28                             <field name="is_ill" string="是否确诊"/>
    29                             <field name="within_or_abroad" string="境内/境外"/>
    30                             <field name="begin_lsolation_date" string="起始隔离日期" attrs="{required':[('is_ill','=',False)],'invisible':[('is_ill','=',True)]}"/>   <!-- invisible="1" 此项设置为隐藏型-->
    31                             <field name="lsolation_mode" string="隔离方式" attrs="{required':[('is_ill','=',False)],'invisible':[('is_ill','=',True)]}"/>
    32                             <field name="ill_type" string="感染方式" attrs="{'required':[('is_ill','=',True)],'invisible':[('is_ill','=',False)]}"/>    <!--隐藏方式与是否确诊关联 is_ill为False时invisible为真-->
    33                             <field name="date" string="确诊日期" attrs="{required':[('is_ill','=',True)],'invisible':[('is_ill','=',False)]}"/>
    34                         </group>
    35                         <group>
    36                             <field name="state" string="省" required="1"/>
    37                             <field name="city" string="市" required="1"/>
    38                             <field name="county" string="区/县"/>
    39                             <field name="street" string="具体地址" required="1"/>
    40                             <field name="create_user_id" string="填报人"/>
    41                         </group>
    42                     </group>
    43                 </sheet>
    44             </form>
    45         </field>
    46     </record>
    47 
    48 <!--    定义一个行为   -->
    49     <record id="covid_w_act_window" model="ir.actions.act_window">
    50         <field name="name">疫情记录</field>
    51         <field name="res_model">covid.w</field>
    52         <field name="view_mode">tree,form</field>
    53     </record>
    54 
    55     <menuitem name="疫情记录" id="covid_w_menu_root" groups="base.group_user" sequence="10"/>
    56     <menuitem name="疫情记录" id="sec_covid_w_menu"
    57               parent="covid_w_menu_root"
    58               action="covid_w_act_window"
    59               sequence="10"/>
    60 </odoo>
    xml文件

    在运行之前还要配置__manifest__.py文件,里面是字典

     1 {
     2     # Theme information
     3     'name': "疫情记录",
     4     'summary': """
     5         疫情记录""",
     6 
     7     'description': """
     8         疫情记录""",
     9 
    10     # 'category': 'Theme',
    11     'version': '0.1',
    12     'depends': [],
    13 
    14     # templates
    15     'data': [
    16         'security/ir.model.access.csv',
    17         'views/covid_w_view.xml',
    18     ],
    19     # 'installable': True,
    20     'application': True,     # 是否是独立模块
    21     'depends': [],
    22 
    23     # demo pages
    24 
    25 
    26 
    27     # Your information
    28     'author': "My Company",
    29     'website': "",
    30 }
    __menifest__.py

    在剩下几个__init__文件中导入模块就能开始运行自己第一个odoo模块了。

    运行odoo-bin.py,在浏览器输入127.0.0.1:8069进入odoo.

    点击安装,就能进入自己的第一个odoo模块了。(每次修改代码都要升级一些模块)

     刚开始学习,还描述不太清楚,后续会完善。

    以上,直接复制可能运行出错,

    搬运方便学习。

  • 相关阅读:
    jeecg错误集锦之hql查询问题 java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode
    jeecg错误集锦之hql查询问题 org.hibernate.hql.internal.ast.QuerySyntaxException: order_pay is not mapped [SELECT PayChannel as className ,count(PayChannel) FROM order_pay group by PayChannel]
    es6--解构赋值-对象
    es6--解构赋值
    es6--let和const命令
    es6--let和const命令
    vue双向绑定时添加.sync不起作用的原因
    构建父子组件时注意的问题
    小程序scroll-view组件补充
    css自定义属性
  • 原文地址:https://www.cnblogs.com/mu-tang/p/15015672.html
Copyright © 2011-2022 走看看