附件上传基本原理实现,可以参考这篇:

https://www.cnblogs.com/ljwTiey/p/7348291.html

http://blog.csdn.net/wangnan537/article/details/41903159

首先我们看一下odoo界面默认的附件功能,有木有感觉不是很友好!囧 :)

下面给小伙伴们介绍另一种odoo自带的附件管理方式!

首先,在你的模型中增加如下定义:

    ###############################################################################################################
# 增加附件上传功能
attachment_number = fields.Integer(compute='_compute_attachment_number', string='Number of Attachments')
@api.multi
def _compute_attachment_number(self):
"""附件上传"""
attachment_data = self.env['ir.attachment'].read_group([('res_model', '=', '替换成你的模型名'), ('res_id', 'in', self.ids)], ['res_id'], ['res_id'])
attachment = dict((data['res_id'], data['res_id_count']) for data in attachment_data)
for expense in self:
expense.attachment_number = attachment.get(expense.id, 0) @api.multi
def action_get_attachment_view(self):
"""附件上传动作视图"""
self.ensure_one()
res = self.env['ir.actions.act_window'].for_xml_id('base', 'action_attachment')
res['domain'] = [('res_model', '=', '替换成你的模型名'), ('res_id', 'in', self.ids)]
res['context'] = {'default_res_model': '替换成你的模型名', 'default_res_id': self.id}
return res
#############################################################################################

前端view视图增加如下代码:

<div class="oe_button_box" name="button_box">
<button name="action_get_attachment_view" class="oe_stat_button" icon="fa-book" type="object">
<field name="attachment_number" widget="statinfo" string="附件上传"/>
</button>
</div>

实现效果:

注意上方这个上传界面,odoo做了权限配置,在开发者模式下,和普通模式下,显示的界面是不同的。

激活开发者模式,该界面显示效果:

这里其实是在视图view前端代码字段中增加了如下设置:

小伙伴们试试吧!!!

ps: 另外,注意一下,odoo附件模型属于底层模型,当服务启动时候,就会加载附件模型数据结构;因此,当你自定义了一个新模块A,扩展了附件的字段,没问题,可以正常安装,也可以正常使用!

但是,但是!如果该新模块A使用了一段时间后,假如你还想在该模块A基础上继续扩展附件字段!

对不起,这个时候,扩展后,重启odoo服务会报错,提示相关附件,找不到你扩展的那个字段。

就是由于,服务启动的时候,附件模型py数据结构文件就会被加载,但是真正的此时数据库中还没有生成相应的字段,所以会报错。

而我们自己开发的模块在模型字段扩展后,为什么没有这个问题呢?

这是因为,我们普通模块模型修改后,同样在odoo服务重启后,模型py文件会被加载,但是,我们可以进入应用列表,找到该模块,点击升级,数据库中就会生成新的表结构。

结论:我们在扩展odoo底层自带模块模型字段的时候,要么一次定义好,要么使用一段时间后还想扩展,那么可以重新编写个单独的模块来扩展。

odoo开发笔记 -- 附件上传的更多相关文章

  1. Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

    上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...

  2. EBS开发附件上传和下载功能(转)

    原文地址: EBS开发附件上传和下载功能 上传 Oracle ERP二次开发中使用的方式有两种,一是通过标准功能,在系统管理员中定义即可,不用写代码,就可以使几乎任何Form具有附件功能,具体参考系统 ...

  3. 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理

    在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...

  4. asp.net结合uploadify实现多附件上传

    1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的 ...

  5. 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  6. 基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  7. SpringBoot | 第十七章:web应用开发之文件上传

    前言 上一章节,我们讲解了利用模版引擎实现前端页面渲染,从而实现动态网页的功能,同时也提出了兼容jsp项目的解决方案.既然开始讲解web开发了,我们就接着继续往web这个方向继续吧.通常,我们在做we ...

  8. (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...

  9. fsLayuiPlugin附件上传使用说明

    fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...

随机推荐

  1. nxn随机矩阵乘以概率向量依旧是概率向量

    由上面可进一步推到出A*A是随机矩阵看成(A a1,A a2...A an) 所以A^m依然是随机矩阵.

  2. 学习devexpresschartControl控件

    devexpress官网chart:https://documentation.devexpress.com/WindowsForms/8117/Controls-and-Libraries/Char ...

  3. js, javascript 图片懒加载 实例代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 有趣的HTML5 CSS3效果

    iphone6 外观:http://www.html5tricks.com/demo/css3-iphone6/index.html 天气图标:http://www.html5tricks.com/d ...

  5. linux 添加本地yum源

    1.查看自己是否安装了 yum rpm -qa|grep yum 查看yum配置文件 2.创建一个文件夹 用于挂载光盘 这里创建到/media下 取名叫cdrom mkdir /media/cdrom ...

  6. linux 环境安装及学习

    一.Httpd Linux(Apache)Httpd服务器安装,启动及httpd.conf配置详解   https://blog.51cto.com/itwish/2160492 httpd-2.4. ...

  7. 《ARM Cortex-M3权威指南》笔记(1)

    http://blog.csdn.net/roverx/article/details/6624859 第1章 介绍 一.ARM Cortex‐M3处理器初探 CM3处理器内核是单片机的中央处理单元( ...

  8. 将一个浮点数转换成人民币读法字符串(java)

    public class Num2Rmb   {       private String[] hanArr = {"零" , "壹" , "贰&qu ...

  9. Win7下无法启动sql server fulltext search (mssqlserver)的问题

    在Win7下安装了SQL Server 2005, 但启动“SQL Server FullText Search (MSSQLSERVER)”服务时启动不成功,系统日志显示“SQL Server Fu ...

  10. C# 简述Action与function

    Action 与 Func是.NET类库中增加的内置委托,以便更加简洁方便的使用委托. 最初使用委托时,均需要先定义委托类型,然后定义一个符合委托类型签名的函数,在调用前,需声明并创建委托对象,将指定 ...