0

我正在使用https://github.com/tfrancoi/odoo_csv_import将数据导入 Odoo“res.partner”模型。导入大多数字段没有问题,但是当我尝试导入字段 state_id 时会抛出此错误:“找到字段'Sta​​te'的多个匹配项(2 个匹配项)”。

res_partner_mapping = {
    (........ more fields here)
    'country_id/id' : mapper.const('base.es'),
    'state_id': mapper.map_val('myStateField', my_state_dictionary),
}

这里 my_state_dictionary 只返回搜索到的 state_id,例如“AV”、“M”或“B”。

问题是 state_id 是一个组合键,所以它应该被 country_id 和 state_id 过滤。例如,“AV”是西班牙的一个州,但它在意大利也是一个不同的州,所以如果只通过 state_id 过滤它会返回 2 条记录。

该字段在 Odoo 中以这种方式声明:

state = fields.Many2one('country',related=city.country)

如何指定关系related=city.country以使用 odoo_csv_import 导入数据?

4

1 回答 1

0

我最近遇到了同样的问题,这就是我解决它的方法:我添加了 create 函数,我正在用我的国家代码查找州。

judet_id 是我模型中的州 ID 字段,RO 是国家代码。

@api.model
def create(self, vals):
    state_curent = self.env['res.country.state'].search([("id","=",vals['judet_id'])])
    if(state_curent and state_curent.country_id.code != 'RO'):          
        state = self.env['res.country.state'].search([("code","=", state_curent.code), ("country_id.code","=", "RO")])
        if state:
            vals['judet_id'] = state.id
    return super().create(vals)
于 2020-12-09T11:10:39.477 回答