1👍
✅
Django models support three models of inheritance. It sounds like you’re after multi-table inheritance:
The second type of model inheritance supported by Django is when each model in the hierarchy is a model all by itself. Each model corresponds to its own database table and can be queried and created individually. The inheritance relationship introduces links between the child model and each of its parents (via an automatically-created
OneToOneField
). For example: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)
All of the fields of
Place
will also be available inRestaurant
, although the data will reside in a different database table. So these are both possible:>>> Place.objects.filter(name="Bob's Cafe") >>> Restaurant.objects.filter(name="Bob's Cafe")
As usual, you can use the admin or a ModelForm
to expose any of your models to users.
Source:stackexchange.com