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 請求。
添加回答
舉報