【问题标题】:How to get specific record in json controller in Odoo 12如何在 Odoo 12 的 json 控制器中获取特定记录
【发布时间】:2020-08-27 21:43:38
【问题描述】:

我的问题说明了一切。 我已经做了一个控制器来搜索特定模型的所有记录。

现在我只想从同一模型中搜索一条记录(按其 id)。

我所有记录的控制器是这样的:

@http.route('/get_sales', type='json', auth='user')
    def get_sales(self):
        sales_rec = request.env['sale.order'].search([])
        sales = []
        for rec in sales_rec:
            vals = {
                'id': rec.id,
                'name': rec.name,
                'partner_id': rec.partner_id,
            }
            sales.append(vals)
        data = {'status': 200, 'response': sales, 'message': 'All sales returned'}
        return data

所以,我必须添加什么才能获得一条记录,具体取决于它的 ID。

谢谢。

【问题讨论】:

  • 使用浏览方式,project模块中有一个例子。如果您需要使用转换器模式,请查看URLs and Routing
  • 使用/get-sale/<int:order_id>作为路由,将order_id作为参数添加到get_sales,使用sale_order = request.env['sale.order'].browse(order_id)获取SO
  • 感谢 cmets 的各位。我解决了这个问题。

标签: python json controller odoo odoo-12


【解决方案1】:

首先,像这样改变你的控制器路由:

@http.route(['/get_sales', '/get_sales/<int:order_id>'], type='json', auth='user')

通过这样做,您现在可以选择使用或不使用order_id 来调用您的路线。

其次,像这样改变你的方法:

def get_sales(self, order_id=None):

现在您可以在方法中添加一些逻辑:

if order_id:
    domain = [('id', '=', order_id)]
else:
    domain = []
sales_rec = request.env['sale.order'].search(domain)

【讨论】:

  • 所有答案都非常相似,但你的答案非常完整,所以我会接受这个。非常感谢,这正是我想要的。
【解决方案2】:

sale_rec = request.env['sale.order'].search([('id','=',YOURID)])

sale_rec = request.env['sale.order'].browse(YOURID)

都返回选中的对象

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多