来自http.Controller类(python)的Odoo对象的池

时间:2015-01-17 20:45:09

标签: python odoo

我是Odoo(openERP)和python的新手。我有一个http.Controller,我正在尝试检索一个模板,该模板应包含openERP数据库中的一些对象,更具体地说是fleet_vehicle_log_fuel_obj。 通常self.pool.get()方法应该这样做,但在控制器中它不起作用。

我正在尝试将一些对象发送到客户端并使用javascript处理它们。

这是我的控制器:

import json
from openerp import SUPERUSER_ID, pooler
from openerp.addons.web import http
from openerp.addons.web.http import request


class google_map(http.Controller):

@http.route(['/google_map'], type='http', auth="public", website=True)
def google_map(self, *arg, **post):
    cr, uid, context = request.cr, request.uid, request.context
    fleet_vehicle_log_fuel_obj = self.pool.get('fleet_vehicle_log_fuel');
    #fleet_vehicle_log_fuel_obj = pool.get('fleet_vehicle_log_fuel')
    ids = fleet_vehicle_log_fuel_obj.search(cr, uid, [])
    return request.website.render("fleet.google_map",  json.dumps(ids))

我得到的错误是'google_map'对象没有属性'pool'。如何获取某种类型的所有对象并将其发送给客户端?

3 个答案:

答案 0 :(得分:3)

我知道我来得太晚了,但这对某人有帮助。

http库允许您从控制器访问模型,因此您应该写:

import openerp.http as http

fleet_vehicle_log_fuel_obj = http.request.env['fleet_vehicle_log_fuel']

然后,您将可以使用fleet_vehicle_log_fuel_obj

应用任何ORM方法

答案 1 :(得分:1)

试试这个:

Autodesk.Viewing.Document.getSubItemsWithProperties

pool = request.registry
model_obj = pool['your.model']

希望这会对你有帮助......

答案 2 :(得分:0)

我还没有对此进行测试,但请尝试添加导入:

  

将openerp.pooler导入为pooler

然后使用代码

  

osv_pool = pooler.get_pool(dbname)

     

osv_pool.get(模型)

我是从openerp/osv/osv.py

得到的