2 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
我用一種非常簡單的方式解決了我的問題。
代碼:
@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貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您想返回 Json(對(duì)于 REST-API),您只需在 Response 對(duì)象中返回它即可。
確保您已從Response
導(dǎo)入odoo.http
。然后你可以像這樣返回json數(shù)據(jù):
return Response(json.dumps({'order_id': order_id}), status=200, content_type="application/json")
我通常將此邏輯包裝在一個(gè)單獨(dú)的函數(shù)中(在控制器外部),該函數(shù)在更新的 Odoo 對(duì)象上記錄請(qǐng)求和響應(yīng),然后返回 Response 對(duì)象。這樣,它也可以在錯(cuò)誤處理中輕松重用(然后您可以在其中返回 Json 格式的自定義錯(cuò)誤響應(yīng))
編輯:還要確保您沒有包含Content-Type: application/json
在請(qǐng)求中,在這種情況下,Odoo 會(huì)認(rèn)為這是一個(gè) JSON-RPC 請(qǐng)求。
添加回答
舉報(bào)