首页 > 解决方案 > 我想将 res.partner 地址中的实际城市字段更改为 many2one 字段而不添加新字段

问题描述

我的代码看起来像:

# -*- encoding: utf-8 -*-

from openerp import models,fields, api

class ResPartner(models.Model):
    _name = 'res.partner'
    _inherit = 'res.partner'

    city_id = fields.Many2one('res.city','Ville',stored = True 
                               ,ondelete='restrict')

class ResCity(models.Model):
    _name = "res.city"
    _description = "Ville"

    name = fields.Char(u"Nom",required = True)
    state_id = fields.Many2one("res.country.state", 'Zone',ondelete='restrict')

所以在我在 xml 中添加视图之后,但我的要求是我需要更改实际字段而不添加新的旧字段:city = fields.char 新的应该看起来像:city = fields.many2one

标签: pythonxmlodooodoo-8

解决方案


您可以简单地覆盖定义,但它会破坏使用此字段的每个模型或视图,您可以将其设为函数字段:

class ResPartner(models.Model):
    _name = 'res.partner'
    _inherit = 'res.partner'

    city_id = fields.Many2one('res.city','Ville' 
                               ,ondelete='restrict')
    @api.depends('city_id')
    @api.multi
    def set_city(self):
         self.city=self.city_id.name

    city = fields.Char(compute=set_city, store=True)

在您的表单视图中,您应该使用 addcity_id和 hide city,其余部分保持平静......

编辑 您可以使用res_partner_cityOdoo 附带的新插件。


推荐阅读