odoo-文件相关操作

odoo文件相关操作

基于odoo 12.0

外部ID

外部ID也成为XML ID,是一个字符串,数据库表中的唯一标识,在记录产生时创建,实质为数据库表记录的ID和别名,odoo在数据文件中定义的记录使用的是外部ID,这样做可以避免升级模块时重复创造记录(外部ID的唯一性)。

可以在 设置->序列与标识符->外部标识 页面搜索外部ID。

模型中的字段的外部通常为:模块名.field_模型名_字段名

注:外部ID只允许有一个 .

视图中查找外部ID的方法:打开开发者模式,使用debug按钮(页面右上角账户按钮左边一个像蜘蛛的按钮)中查看元数据选项,选择按钮中的编辑视图or编辑搜索视图等选项,就可以看到视图相关的外部ID。

导入导出数据

odoo支持导出数据,在列表视图上的动作按钮下拉框中选择导出项:导出可以选择EXCEL和CSV两种格式,需要导出的字段可以在菜单中进行选择。

导入数据需要确认导入功能是否已开启(默认可创建为开启),在创建按钮旁有一个导入按钮,导入页面下方有数据的预览,包括编码、格式、字段映射等。

特殊字段的导入需要不同的处理方式:

  • many2many:通常代表一条数据记录可以关联另一个模型的多条记录。处理时应用逗号(,)隔开,可以写为多个外部ID
    idtag_id/id
    product.producttag.tag1,tag.tag2
  • one2many: 处理方法又有所不同,通常采用父子记录的方式:
    idtag_id/id
    product.producttag.tag1

    tag.tag2

    tag.tag3

模块数据

  • 演示数据
    演示数据一般同样采用csv文件,存放于demo文件下,并且在__manifest__.py文件中将路径添加到demo列表中,需要演示数据时,应用会自动加载。
  • xml数据文件
    在xml文件中加载数据(通常在data文件夹中),使用<record>标签来加载字段,字段使用<field>标签
<record>
	…
	<filed name=""/>
	…
</record>

几种重要的用法:

  • noupdate属性:一般写在xml文件中的<odoo>或者<data>标签中,默认值为0,设为1表示后续更新应用不会再次加载该数据。一般用于初始化

  • 字段表达式:通过eval属性引入python表达式:

    <field name="user_id" eval="ref('base.group_user')" />
    

    这里是many2one字段的赋值表达式,将记录中的user_id赋值为组成员,ref()函数为通过外部ID查找模型记录的函数
    如果是one2many或者many,同样采用eval引入,表达式可分为多种:

    (0,_,{'field':value})   #创建一条新的记录,并关联到本记录中,字典内可含有多个键对值
    (1,id,{'field':value})   #更新已在关联记录字段上的值
    (2,id,_)    #断开并删除关联记录
    (3,id,_)    #断开但不删除关联记录
    (4,id,_)    #关联已存在的记录
    (5,_,_)     #断开但不删除记录,用于原来关联的是多条记录
    (6,_,[ids])#用列表中的id,替换原来的关联记录
    
  • 模型的快捷使用:通过缩写引用模型

    <act_window>  ir.actions.act_window
    <menuitem>    ir.ui.menu
    <report>      ir.actions.report.xml
    <template>    ir.ui.view
    
  • XML数据内的其他操作

    • 删除:<delete>
    • 触发函数 :<function model="" name="" eval="" />
    • 修改:重写记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值