Sommaire

L’héritage entre modèles

Bien que fonctionnant sur la base de l’héritage Python, l’héritage des modèles Django a cependant quelques spécificités. Ces spécificités permettent de contrôler la façon dont le stockage des modèles dérivés sera réalisé dans la base de données. Ont-ils leur propre table SQL ? Partagent-ils celle du modèle dont ils héritent, etc. De ce fait l’héritage présente des contraintes supplémentaires et la liberté totale que donne Python en matière d’héritage se trouve un peu entravée par les limites inhérentes à la gestion par Django de la persistance des objets dans la base.

Pour Django, il y a trois types d’héritages possibles :

  • Les classes abstraites. La classe abstraite mère est uniquement un schéma auquel aucune table de la base de données ne sera associée.

  • L’héritage multitable, permettant de surclasser un modèle existant en lui associant une nouvelle table dans la base de données.

  • Les modèles « proxies » qui permettent de modifier le comportement d’un modèle Django sans toucher aux champs de celui-ci.

1. Les classes abstraites

Le but des classes abstraites est de définir un patron contenant des données et des méthodes communes qui seront partagées par les classes dérivées. ...