Django Héritage


Exemple

L'héritage entre les modèles peut se faire de deux manières:

  • une classe abstraite commune (voir l'exemple "Model mixins")
  • un modèle commun avec plusieurs tables

L'héritage multi-tables créera une table pour les champs communs et un pour chaque exemple de modèle enfant:

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

class Restaurant(Place):
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

créera 2 tables, une pour Place et une pour Restaurant avec un champ OneToOne masqué à Place pour les champs communs.

Notez que cela nécessitera une requête supplémentaire sur les tables de lieux chaque fois que vous récupérerez un objet de restaurant.