0

我使用 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是在哪个城市发消息的

你能帮我吗?

谢谢你

4

2 回答 2

0

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

如果您将城市作为与 res_partner_address 的关系字段,那么在这种情况下,城市字段将仅存储关系记录表的 ID,因此当您使用 sql 注入时,您将获得与您的地址相关联的城市 ID。

如果我遗漏了什么,请告诉我,谢谢。

于 2012-07-16T07:11:51.420 回答
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)
于 2012-07-16T16:39:40.930 回答