官术网_书友最值得收藏!

Extending Python methods

Python methods can also be extended for additional business logic. This is done by borrowing the mechanism Python already provides for inherited objects to extend their parent class behavior: super().

As an example, we will have the TodoTask class extend the ORM write() method to add some logic to it: when writing on a non-active record, it will automatically reactivate it.

Add this additional method in the models/todo_task_model.py file:

@api.multi 
def write(self, values): 
    if 'active' not in values: 
        values['active'] = True 
    super().write(values)

The write() method expects an additional parameter, with a dictionary of values to write on the record. Unless a value is being explicitly set on the active field, we set it to True in case we are writing on an inactive record. We then use super() to call the parent write() method using the modified values.

In previous Odoo versions using Python 2.7, super() needed two arguments, passing the class name and self. In that case, the last statement would be
super(TodoTask, self).write(values). This syntax also works with Python 3, so it should be preferred if keeping Python 2 compatibility is important.

We will have a chance to have a closer look at the ORM methods in Chapter 6, The ORM - Handling Application Data.

主站蜘蛛池模板: 吉林省| 定结县| 什邡市| 长海县| 江华| 肃南| 治县。| 博客| 宜宾县| 大田县| 平安县| 汝阳县| 瓮安县| 孝感市| 白水县| 三明市| 湘潭县| 融水| 和平区| 万安县| 济南市| 巴中市| 镇雄县| 伊春市| 海宁市| 万州区| 平山县| 白河县| 雷山县| 新乐市| 古丈县| 扎兰屯市| 利川市| 水富县| 蒲城县| 张掖市| 河西区| 南陵县| 固原市| 翼城县| 陆良县|