继承类并修改Openerp中的列

时间:2016-01-29 19:19:20

标签: inheritance openerp

我正在Openerp的一个模块上工作,我想从另一个模块继承一个课程,但我不需要在另一个课程中的每一个课程

这是我的班级:

class BookingManagement(orm.Model):
    _name = 'booking.management'

    _inherit = 'res.partner.address.contact'

    _description = 'Booking management'

    _columns = {
        'guests': fields.integer('Number of guests', required=True),
        'check_in': fields.date('From', required=True),
        'check_out': fields.date('To', required=True),
        'special_requests': fields.text('Special requests')
    }

这是 res.partner.address.contact

class res_partner_address_contact(orm.Model):
    _name = "res.partner.address.contact"

    _description = "Address Contact"

    def [...]

    def [...]

    _columns = {
        'complete_name': fields.function(_name_get_full, string='Name', size=64, type="char", store=False, select=True),
        'name': fields.char('Name', size=64, ),
        'last_name': fields.char('Last Name', size=64, required=True),
        'first_name': fields.char('First Name', size=64),
        'mobile': fields.char('Mobile', size=64),
        'fisso': fields.char('Phone', size=64),
        'title': fields.many2one('res.partner.title', 'Title', domain=[('domain', '=', 'contact')]),
        'website': fields.char('Website', size=120),
        'address_id': fields.many2one('res.partner.address', 'Address'),
        'partner_id': fields.related(
            'address_id', 'partner_id', type='many2one', relation='res.partner', string='Main Employer'),
        'lang_id': fields.many2one('res.lang', 'Language'),
        'country_id': fields.many2one('res.country', 'Nationality'),
        'birthdate': fields.char('Birthdate', size=64),
        'active': fields.boolean('Active', help="If the active field is set to False,\
                 it will allow you to hide the partner contact without removing it."),
        'email': fields.char('E-Mail', size=240),
        'comment': fields.text('Notes', translate=True),
        'photo': fields.binary('Photo'),
        'function': fields.char("Function", size=64),
        'function_id': fields.many2one('res.contact.function', 'Function'),
    }

    def [...]

让我们说我需要的唯一列是' last_name ',' first_name ', ' 电子邮件'和' 移动' 我该怎么做?
谢谢!

2 个答案:

答案 0 :(得分:0)

在Odoo中,您可以使用两种继承。 第一个是通过设置(如你所做)

获得的
_name = 'booking.management'

_inherit = 'res.partner.address.contact'

结果是两个表,原始的一个(res_partner_address_contact)没有改变,你的(booking_management)包含你声明的四个字段加上第一个表的ID(你需要声明这个字段)

第二个是通过声明

获得的
_name = 'res.partner.address.contact'

_inherit = 'res.partner.address.contact'

结果是表res_partner_address_contact以及您声明的额外字段。

说,你只能获得一张只有你需要的四个字段的表格。这是一个全有或全无的情况。

答案 1 :(得分:0)

如果你需要继承'res.partner.address.contact'并像你一样只使用last_name', 'first_name', 'email' and 'mobile'继承并在xml视图中添加它们,因为在你写的时候你指定'res.partner.address.contact'应该用在你的模型。

如果您想要contact个信息,请使用One2many链接多个联系人,或Many2one链接一个联系人。