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

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.

主站蜘蛛池模板: 柘荣县| 吉木萨尔县| 于田县| 凤翔县| 富顺县| 天峨县| 县级市| 托里县| 德江县| 兰坪| 汽车| 洛浦县| 咸丰县| 永济市| 锦屏县| 保靖县| 抚顺市| 北海市| 惠来县| 吉木乃县| 新昌县| 西华县| 牟定县| 佛学| 汶上县| 沂源县| 板桥市| 铜山县| 恩施市| 封开县| 仁寿县| 合川市| 潮安县| 普兰店市| 鹤岗市| 吴桥县| 南华县| 舞阳县| 东山县| 浙江省| 治多县|