Search code examples
pythonpostgresqlodoo-8

TypeError: cannot convert dictionary update sequence element #0 to a sequence


I am trying to select the Id of a "fleet_vehicle" object with a specific code's value

        class fleet_inventory_line(osv.osv):
    .
    .
    .

        def find_vehicle_id(self, cr, uid, ids, args, field_name, context=None):
            cr.execute("""SELECT
                          l.id
                        FROM
                          fleet_vehicle l
                        WHERE
                          code = 'MR444' """)
            res = cr.fetchone()
            return res
.
.
.
    _columns = {
        'x_vehicle_id': fields.function(find_vehicle_id, type='integer', string='vehicle id'),
    }

I have the following error :

TypeError: cannot convert dictionary update sequence element #0 to a sequence

I think the problem is in the line :

res = cr.fetchone()

because I'm trying to return an integer, but I didn't found solution, I would be gratful for any help

Edit : the traceback

Traceback (most recent call last):

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 537, in _handle_exception

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 574, in dispatch

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 310, in _call_function

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\service\model.py", line 118, in wrapper

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 307, in checked_call

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 803, in call

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\http.py", line 403, in response_wrap

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server\openerp\addons\web\controllers\main.py", line 944, in call_kw

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server\openerp\addons\web\controllers\main.py", line 936, in _call_kw

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\api.py", line 268, in wrapper

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\models.py", line 3145, in read

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\api.py", line 266, in wrapper

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\models.py", line 3180, in read

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\api.py", line 266, in wrapper

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\models.py", line 3367, in _read_from_database

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\osv\fields.py", line 1478, in get

File "D:\MesDocuments\Les_prog\Odoo 8.0-20160118\server.\openerp\osv\fields.py", line 1439, in _postprocess_batch

TypeError: cannot convert dictionary update sequence element #0 to a sequence


Solution

  • the answer is that I had to use

    res = cr.dictfetchone()

    instead of

    res = cr.fetchone()