Odoo8中层级关系 parent_left,parent_right的定义及使用

Odoo8中一些具有层级关系的数据表都有parent_left和parent_right字段,在数据库设计中称为目录树结构数据(通俗解释请参考https://blog.csdn.net/aoshilang2249/article/details/71419809
还有一篇不错的文档:Odoo 之parent_left 和 parent_right设计:https://blog.csdn.net/Fitz_GuangChen/article/details/77331425

以odoo8中的库位模型为例
模型及字段定义:

# 模型定义
class stock_location(osv.osv):
    _name = "stock.location"   
    _description = "Inventory Locations"
    _parent_name = "location_id"
    _parent_store = True
    _parent_order = 'name'
    _order = 'parent_left'
    _rec_name = 'complete_name'

    # 字段定义
   'parent_left': fields.integer('Left Parent', select=1),
   'parent_right': fields.integer('Right Parent', select=1),

  • _parent_name是指当前数据的父数据id栏位(默认值是parent_id),
  • _parent_store表示使用parent_left,parent_right结构设计
  • ‘parent_left’,‘parent_right’: 字段用与存储左右节点

使用parent_left,parent_right进行查询
建立如下数据:

  • 物理库位(1, 10)
    • 西药库(2, 3)
    • 试剂库 (4, 9)
      • 试剂库1(5, 6)
      • 试剂库2 (7, 8)
  • 虚拟库位 (11, 12)
  1. 如查询试剂库下的所有子库位:
SELECT id FROM stock_location
    WHERE parent_left > 4 AND parent_right< 9
  1. 如查询西药库的父级库位:
SELECT id FROM stock_location
    WHERE parent_left < 2 AND parent_right < 9
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值