1 of 6

Herència

2 of 6

Herència

  • En el model: ampliar o dissenyar noves classes a partir de les existents.
  • En la vista: modificar el comportament de vistes existents o dissenyar noves vistes.
  • En el controlador: sobreescriure els mètodes existents o dissenyar-ne de nous.

3 of 6

Tres tipus d’herència

  • De classe: Substituir.
  • Per prototip: Nova classe independent.
  • Per delegació: Nova classe a partir de múltiples classes.

4 of 6

Herència en el model

_inherit = 'nom.objecte.del.que.es.deriva'

  • Herència simple: _name = _name del pare
  • Herència per prototip: _name distint
    • Es poden afegir columnes noves o sobreescriure existents.
    • Les vistes fan referència a la classe pare.
  • Herència per delegació:

_inherits = {'model.heretat':’nom_del_field’}

    • Hi ha un field Many2one fent referència al pare.

5 of 6

Herència en la vista

<field name="inherit_id" ref="modul.id_xml_vista_pare"/>

Pot afegir, modificar o eliminar camps de la vista.

  • inside (per defecte): els valors s’afegeixen “dins” de l’etiqueta.
  • after: afegeix el contingut després de l’etiqueta.
  • before: afegeix el contingut abans de l’etiqueta.
  • replace: reemplaça el contingut de l’etiqueta.

6 of 6

Herència en el controlador

Si heretem un model, les seues funcions poden ser sobreescrites.

Les noves funcions fan referència a les del pare amb super()