Python 连接2个字段

Python 连接2个字段,python,openerp,Python,Openerp,这是我的功能 def get_concat(self, cr, uid, ids, field_name, arg, context): x = {} for record in self.browse(cr, uid, ids ,context): x[record.id] = record.a+"--"+ record.b return x 字段的定义 'a' : fields.integer('A'), 'b' : fields.integer('B

这是我的功能

def get_concat(self, cr, uid, ids, field_name, arg, context):
  x = {}
  for record in self.browse(cr, uid, ids ,context):
       x[record.id] = record.a+"--"+ record.b
  return x
字段的定义

   'a' : fields.integer('A'),
   'b' : fields.integer('B'),
   'concat' : fields.function(get_concat, method=True, string='Inventaires',type='char', size=40),
我的树状视图不显示任何记录。当我对函数字段进行注释时,一切正常。这就是我知道我的函数不正确的原因 你能告诉我这个函数有什么错误吗!
谢谢你,如果你告诉我回溯信息,我可以帮你

但顺便说一句,在python中,如果您希望以安全的方式连接并避免未经检查的回溯,我将更改您的行

x[record.id]=record.a+“--”+record.b


x[record.id]=%s--%s“%(str(record.a),str(record.b))

在第一个站点,您的函数看起来正常

但当record.a或reocrd.b值为“False”时,可能会发生错误

它将尝试将False转换为字符串。


因此,在这种情况下,您必须先检查条件,然后再将变量浓缩。

因为字段a和字段b都是整数。 在没有类型转换的python中,int和str连接是不可能的

所以要么您错误地定义了a,b的数据类型(使用char作为数据类型),要么使用


$x[record.id]=str(record.a或“”)+“--”+str(record.b或“”)

str()在使用
%s
时是不必要的。我不知道“不要出错!只是我的树视图没有显示任何记录。当我对函数字段进行注释时,一切正常。这就是为什么我知道我的函数是不正确的!你需要试着缩小问题的范围,你能打印出record.a,record.b,record.id并告诉我们你得到了什么吗?我想你正在用OpenERP做一些事情。你能为你的代码提供更多的上下文吗?你能粘贴你定义的字段吗??“不工作”->请告诉我们它是如何不工作的(回溯…)。提供record.a和record.b的字段定义也会很有帮助。我没有得到任何错误!只是我的树视图没有显示任何记录。当我对函数字段进行注释时,一切都很好。这就是为什么我知道我的函数不正确的原因!我试图通过char更改a和b的类型,但这并没有解决问题。所以我只放了:x[record.id]=str(record.a)+“--”+str(record.b);谢谢