如何在 Odoo 上制作控制器以获得自定义值?

How to make a controller on Odoo for custom value?

我需要在 Odoo 上创建一个自定义控制器来从特定任务中获取信息。而且我也可以产生结果。但是现在我遇到了一个问题。

客户端需要检索特定字段的信息。

例如, 客户需要检索带有跟踪号的信息,数据也必须是 JSON 格式。如果单号是15556456356,那么url应该是www.customurl.com/dataset/15556456356

那个URL的路由应该是@http.route('/dataset/<string:tracking_number>', type='http or json', auth="user or public"),基本上方法应该是这样的:

import json

from odoo import http
from odoo.http import Response, request

class tracking(http.Controller):
    # if user must be authenticated use auth="user"
    @http.route('/dataset/<string:tracking_number>', type='http', auth="public")
    def tracking(self, tracking_number):  # use the same variable name
        result = # compute the result with the given tracking_number and the result should be a dict to pass it json.dumps
        return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)

此方法接受 http 请求和 return json 响应,如果客户端发送 json 请求,您应该更改 type='json'。不要忘记 import __init___.py.

中的文件

让我们举个例子,假设我想通过在 URL:

中给出 ID 来 return 一些关于 sale.order 的信息
import json

from odoo import http
from odoo.http import Response, request

 class Tracking(http.Controller):
    @http.route('/dataset/<int:sale_id>', type='http', auth="public")
    def tracking(self, sale_id):
        # get the information using the SUPER USER
        result = request.env['sale.order'].sudo().browse([sale_id]).read(['name', 'date_order'])
        return Response(json.dumps(result), content_type='application/json;charset=utf-8',status=200)

因此,当我使用浏览器输入此 URL 时:http://localhost:8069/dataset/1: