Qu’est-ce que l’héritage de modèle dans Django ?

L’héritage de modèle est une fonctionnalité ORM de Django qui permet aux développeurs de créer des relations hiérarchiques entre les modèles de base de données. Il permet la réutilisation du code, l’extensibilité et une base de code plus propre en s’appuyant sur les principes de la programmation orientée objet.

Que vous construisiez une application web complexe ou que vous travailliez sur un projet plus petit, l’héritage de modèle peut offrir des avantages significatifs, tels que la réduction de la redondance et la garantie d’un comportement cohérent.

Types d’héritage de modèle dans Django

Django prend en charge trois types d’héritage de modèle :

  1. Classes de base abstraites.
  2. Héritage multitable.
  3. Modèles mandataires.

Chacun de ces types d’héritage de modèle présente des avantages et vous les utiliserez à des fins spécifiques.

Classes de base abstraites

Les classes de base abstraites permettent de définir des champs et des méthodes communs dont plusieurs modèles peuvent hériter. Par exemple, si deux modèles partagent des champs similaires, vous pouvez utiliser une classe de base abstraite pour définir ces champs. Examinez cet exemple :

L’extrait de code ci-dessus définit deux modèles Django : Client et Vendeur. Ces modèles partagent deux champs communs, à savoir le nom et courriel. Pour éviter cette redondance, vous pouvez créer un modèle distinct pour contenir les champs communs dans le fichier clients et Vendeur et la rendre abstraite.

L’extrait de code ci-dessus définit un nouveau modèle et définit le modèle abstrait à Vrai. Cela signifie que le modèle sera abstrait et que Django ne créera pas de table dans la base de données.

Vous pouvez réécrire l’élément Client et Vendeur se présentent comme suit :

Dans l’extrait de code ci-dessus, le modèle Client et Vendeurs héritent du modèle UserInfo au lieu de modèles.Modèle.

Vous pouvez visualiser vos modèles dans le panneau d’administration en les enregistrant dans votre fichier admin.py comme ceci :

Migrez vos modes et démarrez votre serveur de développement en exécutant ce qui suit sur une ligne de commande :

Voir aussi :  6 meilleurs terrains de jeux SQL en ligne pour tester vos requêtes

Naviguez vers votre site d’administration et connectez-vous avec vos détails de superutilisateur. Vous devriez voir les trois champs pour chaque modèle.

Dans cet exemple, Django a créé une table pour le modèle Client et Vendeur . Vous pouvez constater que le modèle UserInfo n’a pas de table puisqu’il est abstrait.

Héritage de plusieurs tables

Vous pouvez utiliser l’héritage multitable lorsque le modèle parent doit également exister en tant que table dans la base de données à côté du modèle enfant.

Contrairement à l’héritage d’une classe de base abstraite, où le modèle parent n’est pas une table dans la base de données, l’héritage multitable crée une table pour le modèle parent.

Dans l’héritage multitable, le modèle enfant hérite de tous les champs et méthodes de son modèle parent et ajoute ses propres champs. Les clés étrangères permettent d’établir la relation de modèle entre les modèles parent et enfant.

Voici un exemple d’héritage multitable :

Cet extrait de code définit trois modèles. Le premier modèle, appelé Personne est abstrait. Il définit uniquement le nom et le prénom d’une personne.

Le deuxième modèle, appelé Employé hérite des champs de Personne mais définit des champs supplémentaires. Le champ Employé n’est pas abstrait, il aura donc sa table dans la base de données.

Le modèle final, appelé Gestionnaire hérite des champs du modèle Employé et ajoute un champ appelé titre.

La relation entre le modèle Employé et le Gestionnaire est appelé Héritage multi-tables. Migrez vos modèles, enregistrez-les dans admin.py Démarrez votre serveur et accédez au panneau d’administration. Vous devriez voir deux tables créées par Django.

Lorsque vous essayez d’ajouter un nouveau gestionnaire, vous remarquerez qu’il contient tous les champs de la table Employé ainsi que son propre champ personnalisé.

Modèles mandataires

Un modèle proxy vous aide à créer un nouveau modèle qui s’étend à partir d’un modèle existant sans créer une nouvelle table de base de données. Dans ce type d’héritage de modèle, le modèle proxy et le modèle original partagent la même table. En utilisant les modèles proxy, vous pouvez faire des choses comme créer des modèles personnalisés et modifier les gestionnaires par défaut.

Voir aussi :  Comment extraire les données IMDb avec Python et Cinemagoer

Vous pouvez créer un modèle proxy en ajoutant proxy=True dans l’élément Meta dans la classe Meta . Voici un exemple :

L’utilisation typique d’un modèle proxy est appropriée lorsqu’un modèle de base existe et qu’il est nécessaire de créer une version spécialisée de celui-ci avec des fonctionnalités supplémentaires. Voici un exemple de base :

Cet extrait de code définit deux modèles : Poste et MyPost. Le Post définit deux champs pour le titre et l’auteur. Le modèle ProxyPost hérite du modèle Post .

Migrez les modèles ci-dessus et ajoutez un nouveau message à la table créée pour le modèle Post .

Après avoir ajouté le message, ouvrez le modèle Proxy posts table. Vous devriez trouver le message que vous avez ajouté au tableau Poste dans ce tableau.

Les modifications que vous apportez aux messages dans le tableau Messages proxy affecteront le message correspondant dans le tableau Post et vice-versa. Cela prouve qu’ils partagent réellement la même table.

Vous pouvez modifier la table chaîne() du modèle proxy :

Avec cette modification, un ProxyPost d’un ProxyPost sera son auteur et non son titre. L’ordre du modèle de proxy sera également basé sur le titre au lieu du champ ID par défaut.

Lorsque vous utilisez des modèles proxy, vous devez garder à l’esprit que vous ne pouvez pas ajouter de champs personnalisés à votre modèle proxy. Le principal cas d’utilisation des modèles proxy est lorsque vous souhaitez qu’un modèle prenne en charge plusieurs comportements.

Les modèles proxy vous aident à changer le comportement d’un modèle existant sans modifier ses champs ou la structure de la table de base de données sous-jacente.

Voir aussi :  Lifting State Up : Comment les composants enfants de React communiquent avec les parents

Utiliser l’héritage de modèle pour la réutilisation du code et la structure organisationnelle

En utilisant les différentes techniques d’héritage de modèle, vous pouvez facilement créer un code réutilisable et organisé pour votre projet.

L’héritage de modèle évite le code redondant et améliore la maintenabilité et l’évolutivité de votre code. Il facilite également la navigation dans le code, ce qui favorise une collaboration efficace entre les équipes de développement.

Outre l’héritage de modèles, Django propose l’héritage de gabarits, qui est un excellent moyen de gérer et d’organiser les gabarits de vos projets.

Qu’est-ce que l’héritage Django ?

Django est un framework web populaire qui permet aux développeurs de créer des applications web rapidement et facilement. L’une des puissantes fonctionnalités de Django est sa prise en charge de l’héritage de modèle. L’héritage de modèle permet aux développeurs de créer de nouveaux modèles en héritant des champs de modèles existants.

Qu’est-ce que l’héritage de modèle ?

L’héritage est un modèle de conception couramment utilisé dans la programmation orientée objet qui vous permet de modéliser des entités qui reprennent certaines propriétés ou fonctions d’une autre entité. Cela peut être utile pour modéliser un ensemble d’entités qui sont différentes variantes d’un même type de chose.

Quels sont les styles d’héritage de modèle dans Django ?

Dans Django, il existe trois types d’héritage de modèle : les classes de base abstraites, l’héritage multitable et les modèles mandataires.

Peut-on hériter de modèles dans Django ?

Il existe trois styles d’héritage possibles dans Django. Souvent, vous voudrez simplement utiliser la classe mère pour conserver les informations que vous ne voulez pas avoir à saisir pour chaque modèle enfant. Cette classe ne sera jamais utilisée de manière isolée, c’est pourquoi les classes de base abstraites sont ce que vous recherchez.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *