首页 > 其他分享 >Odoo看板视图实践案例

Odoo看板视图实践案例

时间:2023-09-21 10:34:29浏览次数:42  
标签:comics fields odoo14 Odoo 视图 odoo 看板

看板视图是一个很常见的可视化解决方案了,例如:联系人卡片,任务卡片,还有二次元朋友们经常逛的哔站。

我个人也是非常喜欢看板视图,比起那些呆板的tree视图,看板视图给人的感觉的就是简洁直观又好看。

本人也是初学Odoo一个月,其中深意只知其一,但也想跟各位大佬分享交流,于是斗胆以拙见一篇讨教一二,文中不对之处,还望指正,深表感谢。

啰嗦废话,到此为止。

Odoo的看板视图可谓是相当灵活了,但是设计起来也比较复杂,这里我用了‘’比较‘’,可以想想,在表单视图中,我们大部分时候使用的是Odoo独有的XML元素,,比如<field>和<group>,有时也会用到,html元素,如<div>和<label>,但是在看板试图则恰恰相反,展示模板基于HTML,仅支持两个Odoo独有的元素:<field>和<button>。最终呈现在网页客户端的内容是QWeb模板动态生成的。

这里附上一个简单的看板模板,布局大多如此,稍作修改即可变换各种看板样式。

 

<!--add kanban view-->
<record id="comics_kanban" model="ir.ui.view">
    <field name="model">comics</field>
    <field name="arch" type="xml">
        <kanban>
             
                <!-- Fields to use in expressions -->
                <field name="value1"/>
                <!--...add other used fields-->
             
                <templates>
                    <t t-name="kanban-box">
                            <!--HTML QWeb template-->
                            <!--set the kanban color-->
                            <div t-attf-class="#{kanban_color(record.color.raw_value)} oe_kanban_global_click">
                                <div class="o_dropdown_kanban dropdown">
                                    <!--top-right drop down menu here-->
                                </div>
                                <div class="oe_kanban_body">
                                    <!-- Content elements and fields go here... -->
                                </div>
                                <div class="oe_kanban_footer">
                                    <div>
                                        <!-- Left hand footer.. -->
                                    </div>
                                    <div>
                                        <!-- Right hand footer...-->
                                    </div>
                                </div>
                                <div class="oe_clear"/>
                            </div>
                        </t>
                </templates>
 
        </kanban>
    </field>
</record>

  

以下将介绍一则odoo看板视图的实践案例,最终成果类似视频管理看板。

我将尽可能描述的详细,以便您也可以很容易复现。

 

首先,描述一下案例环境。

我用的是windows 10 系统,本地pgsql 13,python 3.7,pycharm社区版。

不论什么环境,我想效果应该是一样的。

在github拉取odoo14项目。

假设你已经创建好数据库用户和测试用的数据库了,你也知道直接用postgres用户是不允许的。

那么,以防您没有创建好数据库用户和测试用的数据库,也能理解您懒,懒得去查一下,体贴如我,直接附下代码一份,仅供参考。

create user odoo14 with password 'odoo14';
alter role odoo14 with superuser;
create database test1 owner odoo14;
grant all privileges on database test1 to odoo14;

  

接下来是简单枯燥的配置文件,创建模块的环节了。

  1. 创建虚拟环境
  2. 创建odoo.conf
  3. 指定odoo-bin
  4. 配置启动参数-c odoo.conf
  5. 下载依赖 pip3 install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/
  6. 创建文件my_addons,创建模块 python ./odoo-bin scaffold comics my_addons
  7. 启动项目,刷新,安装

然后开始code,内容略显简单,小试牛刀,笔者惭愧,读者勿怪。
1. 编辑模型 comics.py

# -*- coding: utf-8 -*-
 
from odoo import models, fields
 
class comics(models.Model):
    _name = 'comics.comics'
    _description = 'comics.comics'
 
    name = fields.Char(string='动漫标题')
    total = fields.Integer(string='总集数')
    score = fields.Float(string='评分')
    release_date = fields.Date(string='上映时间', default=fields.Date.today())
    current = fields.Integer(string='当前剧集')
    cover_image = fields.Binary(string='封面图片', attachment=True)

  

2. 编辑菜单 menu.xml

<odoo>
    <act_window
        id="act_comics_view"
        name="comics"
        res_model="comics.comics"
        view_mode="tree,kanban,form"
    />
 
    <menuitem
        id="menu_comics_view"
        name="comics"
        action="act_comics_view"
        groups="base.group_user"
    />
</odoo>

  

3. 编辑视图 view.xml

   
<odoo>
    <data>
        <record model="ir.ui.view" id="view_comics_comics_form">
            <field name="name">comics.form</field>
            <field name="model">comics.comics</field>
            <field name="arch" type="xml">
                <form>
                    <sheet>
                        <group>
                            <field name="name"/>
                            <field name="cover_image" widget="image"/>
                            <field name="score"/>
                        </group>
                        <group>
                            <field name="current"/>
                            <field name="total"/>
                            <field name="release_date"/>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>
        <record model="ir.ui.view" id="view_comics_comics_search">
            <field name="name">comics.search</field>
            <field name="model">comics.comics</field>
            <field name="arch" type="xml">
                <search>
                    <field name="name"/>
                </search>
            </field>
        </record>
        <record model="ir.ui.view" id="view_comics_comics_kanban">
            <field name="name">comics.kanban</field>
            <field name="model">comics.comics</field>
            <field name="arch" type="xml">
                <kanban>
                    <field name="id"/>
                    <field name="name"/>
                    <field name="release_date"/>
                    <field name="current"/>
                    <field name="total"/>
                    <templates>
                        <t t-name="kanban-box">
                            <div class="oe_kanban_card" style="height: 150px; width: 300px;">
                                <div class="o_kanban_image" style="width:60%;height:100%;">
                                    <img alt="comics" style="width:100%;height:100%;"
                                         t-att-src="kanban_image('comics.comics', 'cover_image', record.id.raw_value)"/>
                                </div>
                                <div class="oe_kanban_content">
                                    <div class="o_kanban_record_title">
                                        <field name="name" class="o_text_overflow"/>
                                    </div>
                                    <div class="o_kanban_record_bottom">
                                        <span class="oe_kanban_bottom_right">
                                            <field name="release_date"/>
                                        </span>
                                    </div>
                                    <div class="o_kanban_record_bottom" style="height: 40px"> </div>
                                    <div class="o_kanban_record_bottom">
                                        <span class="oe_kanban_bottom_right">
                                            当前更新到<field name="current"/>集
                                        </span>
                                    </div>
                                    <div class="o_kanban_record_bottom">
                                        <span class="oe_kanban_bottom_right">
                                            总共<field name="total"/>集
                                        </span>
                                    </div>
                                </div>
                            </div>
                        </t>
 
                    </templates>
                </kanban>
            </field>
        </record>
    </data>
</odoo>

  

4. 最后别忘了__manifest__.py,添加你刚才写的xml文件。
code完毕,来看效果。
在页面上添加三条记录,我比较喜欢鬼灭之刃。

 

 

标签:comics,fields,odoo14,Odoo,视图,odoo,看板
From: https://www.cnblogs.com/pythonClub/p/17719263.html

相关文章

  • Odoo16.0 支付宝模块
    odoo16.0官方将支付宝模块弃用了,但是需求还在,我们也不太可能去使用推荐的asipay,因此,我们决定,自己手动实现它。安装与配置首先,我们在应用中安装我们的支付宝模块: 安装好之后,我们进入配置界面: 这里对各个参数简单介绍一下:支付宝APPID:我们在支付宝开放平台申请的应用......
  • odoo16 顺丰速运
    随着顺丰官方升级了新的API接口,我们的顺丰模块也顺应时代潮流进行了全新升级,本文将给大家简单介绍一下新顺丰速运模块的功能。安装与配置首先,与老版本不同的是,我们把顺丰的配置参数放到了承运方设置里。 我们在这里填入在丰桥平台设置的客户编码、校验码和月结编号等参数。......
  • Kibana中的数据视图与仪表盘共享实践案例
    前言Kibana是一个非常强大的数据可视化工具,它可以帮助我们快速地将数据转化为可视化的图表和仪表盘。在实际的使用过程中,我们经常会遇到需要将数据视图和仪表盘共享给其他人的情况。本文将介绍如何在Kibana中实现数据视图和仪表盘的共享,并提供一个实际的案例。数据视图的共享在K......
  • 创建视图
    创建视图CREATEVIEW`vw_chengben`AS(select*fromtb_chengben_neibuunionallselect*fromtb_chengben_waibu);CREATEVIEW`vw_shouru`AS(select*fromtb_shouru_neibuunionallselect*fromtb_shouru_waibu);......
  • odoo中在一个模块下修改另一个模块中的视图文件(新增一个字段)
     下面的代码,可以在一个模块中,修改另一个视图的内容,这里是新增一个字段,即:下图中的字段:my_field 固定部分:- <record id="view_order_form_inherit_my_module" model="ir.ui.view">:这是定义一个新的记录的开始标签。model="ir.ui.view"表示这个记录的模型是ir.ui.view,这是O......
  • KingbaseES 数据库中不同user的视图访问授权
    前言本文的目的是实现u1用户访问ud用户下的视图权限。测试登录system用户并创建schema,user,并授权schema的有关权限给ud用户TEST=#selectcurrent_user;current_user--------------system(1row)TEST=#createschemaud;CREATESCHEMATEST=#TEST=#createuserud;......
  • openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图
    openGauss学习笔记-74openGauss数据库管理-创建和管理视图74.1背景信息当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的......
  • MySQL篇:第六章_详解mysql视图
    周末有朋友来上海没来得及更新,特此更两篇以正身视图含义:理解成一张虚拟的表视图和表的区别: 使用方式 占用物理空间 视图 完全相同 不占用,仅仅保存的是sql逻辑 表 完全相同 占用视图的好处:1、sql语句提高重用性,效率高2、和表实现了分离,提高了安全性视......
  • 用ME_CONFIRMATION_UPDATE处理采购订单行项目确认视图
    用function module:ME_CONFIRMATION_UPDATE,可以处理采购订单行项目确认视图,实现增删改操作。 CALLFUNCTION'ME_CONFIRMATION_UPDATE'EXPORTINGI_EBELN="采购订单号TABLESXEKES="对应新增和修改YEKES=......
  • 采购订单确认视图维护
    data:lt_xuekestypetableofUEKES,ls_xuekestypeUEKES.data:lt_ekestypetableofekes,ls_ekestypeekes.dataoptypec.op='U'."修改*op='D'."新增*op='I'."删除caseop.......