连接名字和姓氏并填写到odoo中的名称字段

concatenate firstname and lastname and fill into name field in odoo

我有一个包含三个字段的模块 •姓名 •名 •姓 当用户按下保存 名字和姓氏将连接并显示在名称字段中。 名称字段必须处于只读模式。

def onchange_name(self, cr, uid, ids, firstname, lastname, context=None):
        value = {'fullname' : True}
        if firstname and lastname:
            value['fullname'] = firstname + " " +lastname   
        return {'value': value}


<field name="fullname" readonly="True" on_change="onchange_fullname(fullname,context)"/>
<field name="firstname" string="First name" on_change="onchange_name(firstname,lastname,context)"/>                    
 <field name="lastname" string="Last name" on_change="onchange_name(firstname,lastname,context)"/>  
def create(self, cr, uid, vals, context=None):
    name = str(vals['first_name'] or '') + ' ' +str(vals['last_name'] or '')
    vals['name'] = name
    return super(sample_model, self).create(cr, uid, vals, context=context)

在模型中,重新定义 name 字段作为计算和存储:

name = fields.Char(compute='comp_name', store=True)

然后定义计算方法:

@api.depends('first_name','last_name')
def comp_name(self):
    self.name = (self.first_name or '')+' '+(self.last_name or '')

这样你就可以删除 on_change