我怎么转换成字符串?

时间:2012-07-16 06:06:15

标签: postgresql openerp

我使用sql命令在数据库中选择字段

 partner_obj = self.pool.get('res.partner'). browse (cr, uid, ids, *args)
                partner_name = partner_obj.ids
                customer = (partner_name)
                cr.execute("select b.city from res_partner a, res_partner_address b where b.partner_id = a.id AND a.id = %s",(customer))
                ads = cr.fetchone()
                city = ads and ads[0] or None

但是,我只知道我们必须转换成字符串。我已经尝试这样做(上面的代码),但仍然不起作用。

我是这样做的,因为你想知道SO是在一个城市的消息中

请帮助我,

谢谢

2 个答案:

答案 0 :(得分:0)

OpenERP城市中的第一点不是关系字段,因此当您触发sql来获取城市时,您将获得该名称,但如果您有任何存储城市代码的自定义,那么您需要再一次SQL注入以完成匹配城市代码中的城市。

如果您将city作为关系字段与res_partner_address一样,那么在这种情况下,city字段将仅存储关系记录表的id,因此当您使用sql注入时,您将获得的是与您的地址链接的城市的id

如果我错过了什么,请告诉我,谢谢。

答案 1 :(得分:0)

我认为您不需要运行原始SQL,您应该能够使用浏览记录来获取所需的信息。我不确定你的问题究竟是什么,但我会假设你传递的是合作伙伴ID列表,并且你想要回复他们所有地址的所有城市名称列表。我还没有测试过这段代码,这只是一个建议。

def find_cities(self, cr, uid, partner_ids, context=None):
    cities = set()
    partner_obj = self.pool.get('res.partner')
    for partner in partner_obj.browse(cr, uid, partner_ids, context):
        for address in partner.address:
            if address.city:
                cities.add(address.city)
    return list(cities)