Odoo Help


How can I modify the default "copy" duplicate function??

on 4/17/13, 1:20 PM 11,146 views

plz can anyone told me how to modify the default "copy" duplicate function by inheretance???


Ray Carnes

--Ray Carnes--
| 9 7 9
Keyport, United States
--Ray Carnes--

Senior ERP Analyst

OpenERP 6.1, 7.0; Odoo 8.0, 9.0, 10.0 and 11.0.

Completed Odoo Functional and Technical Training.

Functional Areas:

  • CRM/Sales

  • Inventory

  • Manufacturing

  • Accounting

  • Purchasing

Major Skills:

  • Business Process Reengineering

  • Efficiency Consulting

  • User Needs and GAP Analysis;

  • Functional and Technical Design;

  • Prototyping and Proof of Concepts;

  • Requirements Specifications;

  • Agile Implementation;

  • Data Migration;

  • Configuration & Customization (UI and code);

  • Integration - Odoo and non Odoo Applications and Services;

  • Training and Knowledge Transfer;

  • Go Live Support;

  • Helpdesk;

  • Version Upgrades and Migration.

  • Accounting Expert.

I have over 20 years of experience empowering and enabling users with enterprise information systems that make a real and measurable difference in their ability to proactively manage their businesses and organizations. 

I am a skilled Communicator and I only take the serious things seriously!

Ray Carnes
On 4/18/13, 12:34 AM

Write a new function that overrides the original one and calls the original with your changes:

def copy(self, cr, uid, id, default={}, context=None):
    if not default:
        default = {}
        '[field you want to change the default value of]': '[value you want]',
    return super([class you are changing], self).copy(cr, uid, id, default, context=context)`
Levent Karakaş
On 8/1/15, 10:21 AM

with new api:


def copy(self, default=None):

default = dict(default or {})


 '[field you want to change the default value of]': '[value you want]',


return super([class you are changing], self).copy(default)

+1 for using new API

Limitless Virtual Enterprise, Andre de Kock
on 8/3/15, 1:20 AM

Sudhir Arya (ERP Harbor Consulting Services)

--Sudhir Arya (ERP Harbor Consulting Services)--
| 6 8 8
Ahmedabad, India
--Sudhir Arya (ERP Harbor Consulting Services)--

• Co-Founder & Co-Owner at ERP Harbor Consulting Services

• ERP Consultant / ERP Customization / TechnoFunctional Expert

• Sound knowledge in Python, Odoo (Open ERP), XML, PostgreSQL

• Domain knowledge of Sale Management, Purchase Management, Warehouse Management, Manufacturing, Multi Company Configuration & Management, HR Management, Medical Management, Construction Management, Education Management, Point of Sale, Third Party Integrations

• Positive attitude and quick Learner

• Good analytical skill, quick bug and issue tracing and find the solution

• Good knowledge and experience in payment gateway integration with Odoo

• Ready to accept new challenges

• Active Memeber On Stackoverflow 




Sudhir Arya
ERP Harbor Consulting Services
Sudhir Arya (ERP Harbor Consulting Services)
On 4/18/13, 3:07 AM

Here is the syntax to override def copy function in your module:

def copy(self, cr, uid, id, default=None, context=None):
    Duplicate record with given id updating it with default values
    :param default: dictionary of field values to override in the original values of the copied record, e.g: ``{'field_name': overriden_value, ...}``
    :type default: dictionary
    if default is None:
        default = {}
    #Todo code (You can pass your value of any field in default)
    default.update({'your_field': value})
    return super(your_class_name, self).copy(cr, uid, id, default=default, context=context)

You can refer ORM Copy Method.

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

1 follower(s)


Asked: 4/17/13, 1:20 PM
Seen: 11146 times
Last updated: 2/8/18, 5:00 AM