如何从JSON控制器调用Odoo数据?

问题描述

因此,我需要提供一个Rest服务,该服务将调用特定模型中的数据。

为此,我必须创建一个控制器。

我是Odoo的新手,还是Json的新手,我找不到任何可以解决此问题的方法。

我所需要的只是一个http请求中的所有内容。

container: {
    overflow: "hidden",height: 51
},picker: {
    height: 50
}

这个想法是,当我处理加载的数据时,我可以在模板中呈现此数据。已经使用Http请求完成了此操作,但我需要使用Json。 关于如何更好地实施的任何提示。

解决方法

如果要返回Json(对于REST-API),则只需要在Response对象中返回即可。

确保已从Response导入odoo.http。 然后您可以像这样返回json数据:

return Response(json.dumps({'order_id': order_id}),status=200,content_type="application/json")

我通常将此逻辑包装在单独的函数中(在控制器外部),该函数将请求和响应记录在已更新的Odoo对象上,然后返回Response对象。 这样,它还可以轻松地在错误处理中重用(然后您可以在其中返回Json格式的自定义错误响应)

编辑:还要确保您没有在请求中包括Content-Type: application/json,在这种情况下,Odoo会认为这是JSON-RPC请求。

,

我以非常简单的方式解决了问题。

代码:

@http.route(['/orden_detalle','/orden_detalle/<int:order_id>'],type='json',auth='user')
    def orden_detalle(self,order_id=None):
        if order_id:
            domain = [('id','=',order_id)]
        else:
            domain = []
        sales_rec = request.env['sale.order'].search(domain)
        sales = []
        for rec in sales_rec:
            vals = {
                'id': rec.id,'name': rec.name,'partner_id': rec.partner_id.name,'user_id': rec.user_id.name,}
            sales.append(vals)
        data = {'status': 200,'response': sales,'message': 'Sale(s) returned'}
        return data

我的来源:

  1. https://www.youtube.com/watch?v=wGvuRbCyytk
  2. 我的另一个问题:How to get specific record in json controller in Odoo 12

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...