Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
5 ตอบกลับ
44285 มุมมอง

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

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

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.

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

with new api:

@api.one

def copy(self, default=None):

default = dict(default or {})

default.update({

 '[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

Still works in Odoo 13

Quick note that in Odoo V14 and up you should remove the @api.one because it has been deprecated. The rest still applies :)

คำตอบที่ดีที่สุด

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 = {}
    default.update({
        '[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)`
อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Hi,
I have done same in Odoo v10. May be its help to others.

    @api.one

    @api.returns('self', lambda value: value.id)

    def copy(self, default=None):

        default = dict(default or {})

        default.update({

            'invoice_date': ''})

        return super(AccountInvoice, self).copy(default)

อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
3
ส.ค. 24
15338
Set default filter value in search view แก้ไขแล้ว
3
ก.ค. 23
67931
2
มิ.ย. 23
4266
0
ต.ค. 17
2584
1
ก.ค. 16
10797