版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

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

我个人也是非常喜欢看板视图,比起那些呆板的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>&lt;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>&lt;/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://mirrors.bfsu.edu.cn/pypi/web/simple/
  6. 创建文件my_addons,创建模块 python ./odoo-bin scaffold comics my_addons
  7. 启动项目,刷新,安装

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

# -*- coding: utf-8 -*-from odoo import models, fieldsclass 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_windowid="act_comics_view"name="comics"res_model="comics.comics"view_mode="tree,kanban,form"/><menuitemid="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完毕,来看效果。
在页面上添加三条记录,我比较喜欢鬼灭之刃。

怎么样,还不错吧,不那么仔细的看起来的话,和哔站的界面就差那么一丢丢了。

Odoo看板视图实践案例相关推荐

  1. 在线看板Leangoo实践

    Sprint Backlog是Scrum 团队在当前Sprint(迭代.冲刺)必须完成的任务清单,对于公司的项目团队,如果人员集中,一般采用物理看板,但是对于人员不集中的虚拟团队,物理看板就没有起到有 ...

  2. Unity 3D 刚体(Rigidbody)|| Unity 3D 刚体实践案例

    Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象. 我们通常把在外力作用下,物体的形状和大小(尺寸)保 ...

  3. odoo13学习 odoo的视图

    1. odoo的基本视图结构 基本视图通常共享下面定义的公共结构.占位符用全大写表示. <record id="MODEL_view_TYPE" model="ir ...

  4. Kubernetes(K8s)容器设计模式实践案例 – 分散收集模式

    <Kubernetes与云原生应用>专栏是InfoQ向轻元科技首席架构师王昕约稿的系列 文章.本专栏包含8篇内容,将会从介绍和分析Kubernetes系统以及云原生应用 入手,逐步推出基于 ...

  5. 【视频课】言有三每天答疑,38课深度学习+超60小时分类检测分割数据算法+超15个Pytorch框架使用与实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  6. 【视频课】零基础免费38课时深度学习+超60小时CV核心算法+15大Pytorch CV实践案例助你攻略CV...

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  7. 【视频课】8大Pytorch CV实践案例,超30小时视频助你攻略CV三大基础任务(分类分割检测)

    计算机视觉中大大小小可以包括至少30个以上的方向,在基于深度学习的计算机视觉研究方向中,图像分类,图像分割,目标检测无疑是最基础最底层的任务,掌握好之后可以很快的迁移到其他方向,比如目标识别,目标跟踪 ...

  8. 神策数据荣获“2017金融科技·大数据优秀案例之最佳实践案例奖”

    当前,金融市场活跃度不断提升,业务模式不断创新,金融领域数据量呈爆炸式增长,蓬勃发展的大数据产业给金融业的发展带来了新机遇,也提出了新的挑战. 6 月 29 日, 「数据猿·超声波」之金融科技­商业价 ...

  9. 超干货 | 一线从业者实践案例大分享:3个tips实现用户增长

    12.21冬至日,网易云信.网易七鱼联合职人社举办线下闭门交流会,一起探讨To B企业如何做增长.活动筛选了来自不同行业的21位嘉宾,要求每人准备5分钟的分享,聊聊自己在过去一年的增长经验. 继最具启 ...

最新文章

  1. library “libopencv_java4.so“ not found“
  2. Linux编译安装 php soap模块
  3. oracle 查看表被谁删了_【分享】Oracle 常用运维命令大全
  4. 关于 SAP Spartacus low level Component的customization
  5. 驱动框架3——在内核中添加或去除某个驱动
  6. 捷信达会员管理系统SQL语句相关
  7. 斗地主Java课程设计_Java课程设计---web版斗地主
  8. 美国邮政编码ZIP Code(转载)
  9. 解决黑苹果核显HD4400开机卡在“io console user: gio screen lock state 3”问题/HD4400核显只有7M问题
  10. .netcore获取微信openid与unionid方法
  11. C++STL之<set>和<map>
  12. Oracle 10.2.0.5 + OFS 3.4.2 双节点集群
  13. 在Windows上使用EDA软件——利用WSL安装IC618、SPECTRE181
  14. again计算机谱子,Again钢琴简谱-数字双手-YUI
  15. 泰拉瑞亚手机版html,泰拉瑞亚提基套装怎么得 提基套装属性详解
  16. html5 视频录制上传视频,怎么上传视频(手把手教你怎么在今日头条录制及上传视频)...
  17. 评价指标:半峰全宽FWHM(MATLAB Field II仿真)
  18. 聚类分析——matlab
  19. 第十五周学习周报(20180611-20180617)
  20. 朋友圈评论回复的两种实现方式

热门文章

  1. element-ui单选框无法默认选中
  2. java nextint括号_Java中关于nextInt()、next()和nextLine()的理解
  3. 古语云:工欲善其事必先利其器 最新、最全的 IntelliJ IDEA(2018.3.3) 的介绍、安装、破解、配置与使用
  4. java-php-python-游戏账号交易计算机毕业设计
  5. js忍者秘籍读书笔记(前四章)
  6. 如何使用python简单的爬取微博搜索的内容
  7. Win10下,笔记本通过网线分享无线网络
  8. 国内linux内核名人,世界10大IT技术伟人 Linux之父居首
  9. 华为软件开发云CloudIDE功能简测
  10. Nginx虚拟主机与域名解析