odoo调用ApiPost

GET

API

http:IP:PORT/{
   
   {version}}/model_name

query返回指定字段

正选

记录集返回id,name的数据

http:IP:PORT/{
   
   {version}}/model_name?query={id,name}

反选

记录集返回除name之外的数据

http:IP:PORT/{
   
   {version}}/model_name?query={-name}

内嵌返回

http:IP:PORT/{
   
   {version}}/model_name?query={id,name,manager{name},dad{id,name}}

filter过滤返回数据

以domain的表示形式来筛选返回数据,可以查看我之前写的domain语法汇总

单条件

http:IP:PORT/{
   
   {version}}/model_name?filter=[["kind", "=", "manpower"]]

多条件

http:IP:PORT/{
   
   {version}}/model_name?filter=["|",["status", "=", "OK"],["status", "=", "READY"]]

&联合查询

使用&连接

http:IP:PORT/{
   
   {version}}/model_name?query={id, name}&filter=[["id", ">", 60], ["id", "<", 70]]  

page分页

page_size (optional) & page (optional)

http:IP:PORT/{
   
   {version}}/model_name?query={id, name}&page_size=5&page=3

注意:prev、current、next和total_pages分别显示上一页、当前页、下一页和总页数

limit

限制返回数据条数

http:IP:PORT/{
   
   {version}}/model_name?query={id, name}&limit=3  

POST

body

接口形式

data

{
	"params": {
		"data": {
			"name": "技术部",
        }
    }
}

Many2one

Many2one字段直接关联表的ID

{
	"params": {
		"data": {
			"name": "技术部",
			"dad":1  // dad是Many2one字段
        }
    }
}

One2many

1)新建

(0, 0,{ values })根据values里面的信息新建一个记录

在BODY中使用domain的表示形式

(0, 0,{ values }) 表示为
[0, 0,{“consumable”: “0.3”, “engineer_u_res”:1,}],

{
	"params": {
		"data": {
            "name": "清理现场9",
            "res_consume":[
                [0, 0,{
                "consumable": "0.3",
                "engineer_u_res":1,
                }],
            ],     // res_consume是One2many字段
        }
    }
}
2)更新

(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)

3)删除

(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

Many2many

1)新建一个记录

(0,0,{values}) 根据values里面的信息新建一个记录

2)更新一个记录

(1,ID,{values})更新id=ID的记录(写入values里面的数据)

3)删除一个数据及链接关系

(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

4)删除这个记录的链接关系,不删除其数据

(3,ID) 切断主从数据的链接关系但是不删除这个数据

5)新建这个记录的主从链接关系

(4,ID) 为id=ID的数据添加主从链接关系。

6)删除所有的记录的数据链接关系

(5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)

7)先删除所有记录的数据链接关系,再新建新的主从链接关系

(6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))

例子:[(6, 0, [8, 5, 6, 4])] 设置 many2many to ids [8, 5, 6, 4]

context

传递上下文

{
    "params": {
        "context": {
            "context_1": "context_1_value",
            "context_2": "context_2_value",
            ....
        },
        "data": {
            "field_1": "field_1_value",
            "field_2": "field_2_value",
            ....
        }
    }
}

API

http:IP:PORT/{
   
   {version}}/model_name

PUT

写法同POST

body

data

PUT的data写法同POST

filter

过滤数据

{
    "params": {
        "filter": [["id", "=", 95]],
        "data": {
            "name": "Test product"
        }
    }
}

context

上下文用于传递与记录更新相关的任何上下文

{
    "params": {
        "context": {
            "context_1": "context_1_value",
            "context_2": "context_2_value",
            ....
        },
        "filter": [["id", "=", 95]],
        "data": {
            "field_1": "field_1_value",
            "field_2": "field_2_value",
            ....
        }
    }
}

operation

这只适用于一对多和多对多字段。

概念是,有时您可能不想替换one2many或many2many字段上的所有记录,相反,您可能想要添加其他记录或删除一些记录,这就是放置操作的地方。

基本上有三种PUT操作:push, pop和delete。

  • push用于在已有的链接记录上添加/追加其他记录
  • pop用于从正在更新的记录中删除/取消链接某些记录,但不会在系统上删除它们
  • delete用于删除/解除链接并永久删除记录
{
    "params": {
        "filter": [["id", "=", 95]],
        "data": {
            "related_product_ids": {
                "push": [102, 30],
                "pop": [45],
                "delete": [55]
            }
        }
    }
}

API

http:IP:PORT/{
   
   {version}}/model_name

DELETE

API

http:IP:PORT/{
   
   {version}}/model_name/<int:id>

filter

http:IP:PORT/{
   
   {version}}/model_name?filter=[["id", "=", 95]]

猜你喜欢

转载自blog.csdn.net/weixin_44141284/article/details/130762753
今日推荐