2017-08-28 49 views
0

我想在屏幕上显示记录总数。为此,我为函数编写查询语言,并在Ubuntu 14.04命令行屏幕上通过从python代码打印该值来获得期望的结果。但是当我在函数中返回这个值时,它会显示错误弹出消息“TypeError:'int'object is not iterable”。所以,任何人都可以为我解决这个问题。下面是我的函数和字段的python代码。对于odoo,'Int'值不会返回功能8

Python代码:

def get_count(self, cr, uid, ids, sequence, arg, context=None): 
    cr.execute('SELECT count(*) from sun_helpdesk') 
    u_data = cr.fetchall() 
    print "cr:", u_data 
    print "res:",int(u_data[0][0]) 
    return int(u_data[0][0]) 

_columns = { 
    'sequence': fields.function(get_count, method=True, string='Total Tickets', type='integer'), 
} 

XML代码: 在XML中此字段添加简单。

结果对Ubuntu的屏幕是:

cr: [(101L,)] 

res: 101 

new_values = dict(values) 

TypeError: 'int' object is not iterable 
+0

什么是'new_values = dict(values)'中的'values'? – quamrana

+0

从int(u_data [0] [0])中移除'int'并测试它。我想你得到的是一个元组,然后你试图使它成为一个整数。 – 0decimal0

回答

1

您需要返回的字典其中的关键是IDS,例如:

def get_count(self, cr, uid, ids, sequence, arg, context=None): 

    res = {} 

    cr.execute('SELECT count(*) from sun_helpdesk') 
    u_data = cr.fetchall() 
    print "cr:", u_data 
    print "res:",int(u_data[0][0]) 

    #res[id] must be set to False and not to None because of XML:RPC 
    # "cannot marshal None unless allow_none is enabled" 
    res[ids[0]] = int(u_data[0][0]) if ids else False 
    return res 

看看Function field

+0

谢谢......!它正在工作。 –