ODOO通过JS写入模型的两种方法

2017-10-01 09:29:07来源:CSDN作者:u013323965人点击

分享

问题来源

ODOO在Qweb中是可以使用JQuery的,所以可以通过前端异步请求后端方法来使用。

AJAX方法

既然可以使用JQuery,那就可以用$.ajax()方法来请求Controller里的方法,后端控制器的例子如下:

class Controller(http.Controller):        @http.route("/model/add",type='http',auth="public",website=True)    def add(self,**kw):        model= http.request.env['base.model']        text = '已添加成功'        try:            record = model.search([('no','=',kw.get('no'))])            if not record.exists():                model.sudo().create(kw)            else:                text = '数据库已存在该编号,请修改编号'            except Exception:                text = '有错误发生'

这里有注意的几个点:

  • 需要http.route装饰器来指定访问路径
  • http.request.env[]来拿到模型
  • 模型的create方法来写入数据

然后就可以通过ajax来请求了。

ODOO自带的异步方法

其实ODOO还自带了请求方法,节省了写控制器的时间,大家可以理解为前端通过获取模型来调用后端模型里的方法,后端模型的例子如下:

@api.model    def model_add(self, **kwargs):        text = '已添加成功'        try:            if not self.search([('no','=',kwargs.get('no'))],limit=1).exists():                self.create(kwargs)            else:                text = '数据库已存在该编号,请修改编号'        except Exception:            text = '有错误发生'           return text

这里注意几点:

  • 要注意新版api装饰器
  • 直接使用self就可以操作模型了

前端方法:

var Model = require('web.Model');...var model = new Model("base.model");model.call("model_add",{}).then(function(result) {               ...          });

这里注意几点:

  • 需要依赖于”web.Model”的js
  • 通过call方法直接请求模型后端方法,第一个参数为方法名,第二个参数为要传入的参数

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台