概要
如果你是第一次看到这篇文章,那么建议您可以先了解文章:odoo中的所有字段类型。话不多说,上正片:
模块目录
文件代码
__init__.py(models)
# -*- coding: utf-8 -*-
from . import fields_about
fields_about.py
# -*- coding: utf-8 -*-
import ast
from odoo import api, fields, models, modules, tools, _
class AllFieldAbout(models.Model):
_name = "all.field.about"
_description = """字段相关内容"""
# 基础字段类型
char_field = fields.Char('name字段')
text_field = fields.Text('text字段')
integer_field = fields.Integer('integer字段')
float_field = fields.Float('float字段')
boolean_field = fields.Boolean('boolean字段')
date_field = fields.Date('date字段')
datetime_field = fields.Datetime('datetime字段')
# 关联字段类型
many2one_field_id = fields.Many2one('res.partner', 'many2one字段')
one2many_field_ids = fields.One2many('res.partner', 'all_field_about_id', 'one2many字段')
many2many_field_ids = fields.Many2many('res.partner', 'res_partner_all_field_about_rel', 'all_field_about_id', 'partner_id', 'many2many字段')
# 其他字段类型
selection_field = fields.Selection([('1', '1'), ('2', '2')], 'selection字段')
binary_field = fields.Binary('binary字段')
image_field = fields.Image('image字段')
html_field = fields.Html('html字段')
currency_id = fields.Many2one('res.currency', string='Currency', required=True,
default=lambda self: self.env.company.currency_id)
monetary_field = fields.Monetary('monetary字段', currency_field='currency_id')
reference_field = fields.Reference([('res.partner', 'res.partner'), ('res.users', 'res.users')], 'reference字段')
class ResPartner(models.Model):
_inherit = 'res.partner'
all_field_about_id = fields.Many2one('all.field.about', 'all_field_about_id')
ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_all_field_about,all_field_about,model_all_field_about,base.group_user,1,1,1,1
all_field_about.xml
<odoo>
<record id="all_field_about_form_view" model="ir.ui.view">
<field name="name">all_field_about_form_view</field>
<field name="model">all.field.about</field>
<field name="arch" type="xml">
<form string="字段相关">
<sheet>
<group>
<group string="基础字段类型">
<field name="char_field"/>
<field name="text_field"/>
<field name="integer_field"/>
<field name="float_field"/>
<field name="boolean_field"/>
<field name="date_field"/>
<field name="datetime_field"/>
</group>
<group string="其他字段类型">
<field name="selection_field"/>
<field name="binary_field"/>
<field name="image_field"/>
<field name="html_field"/>
<field name="monetary_field"/>
<field name="reference_field"/>
</group>
</group>
<group string="关联字段类型">
<field name="many2one_field_id"/>
<field name="one2many_field_ids"/>
<field name="many2many_field_ids"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="all_field_about_tree_view" model="ir.ui.view">
<field name="name">all_field_about_tree_view</field>
<field name="model">all.field.about</field>
<field name="arch" type="xml">
<tree>
<field name="char_field"/>
<field name="text_field"/>
<field name="integer_field"/>
</tree>
</field>
</record>
<record id="all_field_about_action" model="ir.actions.act_window">
<field name="name">字段相关</field>
<field name="res_model">all.field.about</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="all_field_about_tree_view"/>
</record>
<menuitem
id="all_field_about_menu"
action="all_field_about_action"
sequence="10"
/>
</odoo>
__init__.py
# -*- coding: utf-8 -*-
from . import models
__manifest__.py
# -*- coding: utf-8 -*-
{
'name': "all_field_about",
'summary': """
odoo17所有字段相关内容""",
'description': """
展示odoo17所有字段相关内容
""",
'author': "demo",
'website': "demo",
'license': 'LGPL-3',
'category': 'fields',
'version': '17.0.0.1',
'depends': [],
'data': [
'security/ir.model.access.csv',
'views/all_field_about.xml',
],
}
安装模块
- 把模块放到某个文件目录下,然后在odoo.conf文件引用一下文件目录路径。(我的是放在了csdn_module目录下)
addons_path = D:\odoo17\odoo\addons,D:\odoo17\odoo\csdn_module
- 必须重启odoo!
- 进到界面开启debug模式!
- 然后进入应用目录-->左上角点击 更新程序列表-->更新
- 然后搜索模块名称,进行安装即可
- 安装后目录将多出一个“字段相关”的菜单,此菜单就是您创建好的模块
小结
多写多敲多思考,毕竟,知己知彼才能看懂源码。