Odoo Help


Capitalize the first letter of the words

on 8/11/14, 11:45 AM 2,526 views

Hi expert,

I am newbie on openerp/odoo, I would like to  capitalize the first letter of every word entered into a employee name, how to do that?

I am using openerp/odoo version 7

let say if I entered: john doe it would be John Doe



Vasiliy Birukov

--Vasiliy Birukov--
| 7 6 8
Russian Federation
--Vasiliy Birukov--

Help develop and implement any project on base Odoo.

Vasiliy Birukov
On 8/12/14, 7:10 AM

Define onchange method for this field. Inside method convert value of field as you like.

Giezel Esteves
On 4/27/17, 9:55 PM


first_name = fields.Char(string='First Name')

middle_name = fields.Char(string='MiddleName')

last_name = fields.Char(string='LastName')


def create(self, vals):

     vals['first_name'] = vals['first_name'].title()

     vals['middle_name'] = vals['middle_name'].title()

    vals['last_name'] = vals['last_name'].title()

     return super(Employee, self).create(vals)



On 4/27/17, 10:40 PM

You can title() function for this purpose field_name.title().

On 6/13/16, 6:58 AM

May be useful for v9 and v8 users,

name = fields.Char()


def caps_name(self):

    if self.name :

        self.name = str(self.name).title()

Krupesh Laiya
On 3/3/16, 7:45 AM

Pls refer following links:



badr elmar
On 3/3/16, 5:38 AM

the answer for odoo v8 

prenom = fields.Char()


def _compute_upper(self):

for rec in self:

self.prenom = self.prenom.title() if self.prenom else False

On 8/17/14, 12:01 PM

Thanks for the response, and here's I have done already.


        <!--Employee form view -->

                       <div class="oe_title">
                            <label for="name" class="oe_edit_only"/>
                            <field name="name"  on_change="onchange_name(name)"/>

On hr.py I have added the below code

def onchange_name(self, cr, uid, ids, name, context=None):
    return {
        'value': {
            'name': name.title()


Got the following errors:

OpenERP Server Error

Client Traceback (most recent call last): File "/home/philip/ws/openerp/web/addons/web/http.py", line 204, in dispatch response["result"] = method(self, **self.params) File "/home/philip/ws/openerp/web/addons/web/controllers/main.py", line 1125, in call_kw return self._call_kw(req, model, method, args, kwargs) File "/home/philip/ws/openerp/web/addons/web/controllers/main.py", line 1117, in _call_kw return getattr(req.session.model(model), method)(*args, **kwargs) File "/home/philip/ws/openerp/web/addons/web/session.py", line 42, in proxy result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw) File "/home/philip/ws/openerp/web/addons/web/session.py", line 30, in proxy_method result = self.session.send(self.service_name, method, *args) File "/home/philip/ws/openerp/web/addons/web/session.py", line 103, in send raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info) Server Traceback (most recent call last): File "/home/philip/ws/openerp/web/addons/web/session.py", line 89, in send return openerp.netsvc.dispatch_rpc(service_name, method, args) File "/home/philip/ws/openerp/server/openerp/netsvc.py", line 296, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File "/home/philip/ws/openerp/server/openerp/service/web_services.py", line 626, in dispatch res = fn(db, uid, *params) File "/home/philip/ws/openerp/server/openerp/osv/osv.py", line 190, in execute_kw return self.execute(db, uid, obj, method, *args, **kw or {}) File "/home/philip/philip/openerp/server/openerp/osv/osv.py", line 132, in wrapper return f(self, dbname, *args, **kwargs) File "/home/philip/ws/openerp/server/openerp/osv/osv.py", line 199, in execute res = self.execute_cr(cr, uid, obj, method, *args, **kw) File "/home/test/philip/openerp/server/openerp/osv/osv.py", line 187, in execute_cr return getattr(object, method)(cr, uid, *args, **kw) AttributeError: 'hr.employee' object has no attribute 'onchange_name'

 I would greatly appreciate any help you can give me in working this problem

Hi philip, I updated my code please check it.

on 8/18/14, 3:31 AM
Thank you so much, very appreciated here, will update later

On Mon, Aug 18, 2014 at 3:31 PM, prakash <prakash-jain-sunarctechnologies-com@mail.odoo.com> wrote:

Hi philip, I updated my code please check it.

prakash Sent by OpenERP S.A. using Odoo. Access your messages and documents in Odoo

on 8/18/14, 6:03 AM

Thank you so much prakash, really appreciated your help, is working now

on 8/18/14, 8:21 AM

Med Said BARA

--Med Said BARA--
| 5 5 7
--Med Said BARA--
Med Said BARA
On 8/28/14, 7:08 AM

Capitalize Firstname and set Name to Uppercase: Just use the tg_partner_firstname from http://thierry-godin.developpez.com/openerp/openerp-module-pos-enhanced-fr/fichiers/openerp_tg_pos_enhanced_package_1.0.1.zip



| 5 4 7
Bikaner, India

OpenERP Devloper at SunARC Technology

On 8/12/14, 8:17 AM

In python use the code name.title() to Capitalize the first letter in Create method or onchange Method.


I tested your code its working without any issue.

Try the below code:-

   <div class="oe_title">
      <label for="name" class="oe_edit_only"/>
           <field name="name"  on_change="onchange_name(name)"/>

def onchange_name(self, cr, uid, ids, name, context=None):
    if name:
        return {'value': {'name': name.title()}}
    return {'value':{}}
After making these changes, restart the server update your module and test it. It should work.



About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

2 follower(s)


Asked: 8/11/14, 11:45 AM
Seen: 2526 times
Last updated: 4/27/17, 10:40 PM