Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Odoo 9,如何使用self.pool.get获取记录ID?_Python 2.7_Record_Self_Odoo 9 - Fatal编程技术网

Python 2.7 Odoo 9,如何使用self.pool.get获取记录ID?

Python 2.7 Odoo 9,如何使用self.pool.get获取记录ID?,python-2.7,record,self,odoo-9,Python 2.7,Record,Self,Odoo 9,我正在为ODOO9开发一个模块,我有一个名为“job_id”的字段。这应该是一个唯一的自动递增整数字段,用于帮助识别我的记录。我有另一个字段叫做“account_id”,这是一个与res.partner有关的多个字段。作业id仅对帐户id是唯一的 我的目标是计算作业id并将其存储,以备将来增加;当帐户id更改或创建表单时。目前,我正在create方法中运行我的函数 在Odoo shell中,我发现如果我做了类似于下面的操作,它就工作了,但是当我将它添加到模块中时,它错误地说模型没有“env”属

我正在为ODOO9开发一个模块,我有一个名为“job_id”的字段。这应该是一个唯一的自动递增整数字段,用于帮助识别我的记录。我有另一个字段叫做“account_id”,这是一个与res.partner有关的多个字段。作业id仅对帐户id是唯一的

我的目标是计算作业id并将其存储,以备将来增加;当帐户id更改或创建表单时。目前,我正在create方法中运行我的函数


在Odoo shell中,我发现如果我做了类似于下面的操作,它就工作了,但是当我将它添加到模块中时,它错误地说模型没有“env”属性

def make_job_id(self, cr, uid, vals, context=None):
    if context is None:
        context = {}
    job_ids = []
    ids = self.env['custom.custom'].search([('account_id','=',vals['account_id'])]) # Search the custom.custom model for all records who's account_id matches this record's account_id and return object IDs
    fields = ids.fields_get('job_id') # Get python field descriptor, always returns id + whatever specified fields
    jobs = ids.read(fields) # Read the value of the supplied fields for each record

    if len(jobs) > 0:
        for i in jobs:
            if i.job_id not in job_ids:
                job_ids.append(i.job_id)
        job_ids = max(job_ids) + 1
    else:
        job_ids = 1
    vals['job_id'] = job_ids
    return vals['job_id']
在发现Odoo显然对env何时可用很挑剔之后,我将我的函数修改为如下

而不是 ids = self.env bla bla bla 我看到的是,“self.pool.get”不像“self.env”那样返回id为的对象,而是简单地返回id

要使用self.pool.get提供的id,我可以对函数做些什么?

如您所述,“search”方法只返回id,而不返回对象。尝试在“搜索”之后使用“浏览”方法来获取实际对象,如下所示:


objs=self.pool.get('custom.custom').browse(cr,uid,ids,context=context)

很抱歉回复太晚,我不得不将工作中的项目搁置几天。添加带有搜索返回的ID的浏览确实有效。我确实发现了一个开始引起问题的小问题,出于某种原因,我不再能够做ids.job\u id,但是ids['job\u id']工作得非常好! ids = self.pool.get('custom.custom').search(cr, uid, [('account_id','=',vals['account_id'])], context=context) 2017-01-24 18:49:23,211 7875 DEBUG [redacted database] openerp.addons.custom.models.models: ####### make_job_id, the_ids: [] 2017-01-24 18:49:23,212 7875 DEBUG [redacted database] openerp.addons.custom.models.models: ####### make_job_id, job_ids: 1 2017-01-24 18:49:23,212 7875 DEBUG [redacted database] openerp.addons.custom.models.models: ####### make_job_id, vals[job_id]: 0 2017-01-24 18:49:23,213 7875 DEBUG [redacted database] openerp.addons.custom.models.models: ####### make_job_id, vals[job_id]: 1
2017-01-24 18:50:05,412 7875 DEBUG [redacted database] openerp.addons.custom.models.models: ####### make_job_id, the_ids: [1]
2017-01-24 18:50:05,414 7875 ERROR [redacted database] openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 643, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 680, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 892, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/web/controllers/main.py", line 884, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/custom/models/models.py", line 593, in create
    vals['job_id'] = make_job_id(self, cr, uid, vals, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/custom/models/models.py", line 569, in make_job_id
    the_fields = the_ids.fields_get('job_id')
AttributeError: 'list' object has no attribute 'fields_get'