2 回答
TA贡献1801条经验 获得超8个赞
我用一种非常简单的方式解决了我的问题。
代码:
@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
TA贡献1811条经验 获得超4个赞
如果您想返回 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 请求。
添加回答
举报