я хочу изменить поле фактического города в адресе res.partner на поле many2one без добавления нового поля - PullRequest
1 голос
/ 18 апреля 2019

Мой код выглядит следующим образом:

# -*- 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

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Вы можете просто переопределить определение, но оно разрушит каждую модель или представление, которое использует это поле, вместо этого вы можете сделать его функциональным полем:

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)

в ваших представлениях формы вы должны использовать add city_id и прячься city, оставь остальных в покое ...

0 голосов
/ 18 апреля 2019

Просто переопределите старое определенное API поле city в старом API:

from openerp import models,fields, api
from openerp.osv import fields as ofields

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

    _columns = {
        'city': ofields.many2one('res.city', 'Ville', ondelete='restrict'),
    }

Имейте в виду, что многие виды больше не будут работать, например, представление партнера Канбан.

...