Python : lien
Django : lien
Data base : lien
Cas d'utilisation pour airport/fligth/manager
Créons un environnement Django avec des modèles représentant
- un aéroport,
- des vols et
- des passagers.
Nous inclurons des exemples de relations un-à-un, un-à-plusieurs et plusieurs-à-plusieurs, ainsi que l'attribut related_name pour les recherches inversées.
Models
- One-to-One Relationship: Each airport has one airport manager.
- One-to-Many Relationship: Each flight departs from one airport but an airport can have many departing flights.
- Many-to-Many Relationship: Passengers can book many flights, and each flight can have many passengers.
Django Models
from django.db import models
class Airport(models.Model):
name = models.CharField(max_length=100)
location = models.CharField(max_length=100)
manager = models.OneToOneField('Manager', on_delete=models.CASCADE, related_name='managed_airport')
class Manager(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
class Flight(models.Model):
flight_number = models.CharField(max_length=10)
departure_time = models.DateTimeField()
arrival_time = models.DateTimeField()
departure_airport = models.ForeignKey(Airport, on_delete=models.CASCADE, related_name='departures')
arrival_airport = models.ForeignKey(Airport, on_delete=models.CASCADE, related_name='arrivals')
class Passenger(models.Model):
name = models.CharField(max_length=100)
passport_number = models.CharField(max_length=20)
flights = models.ManyToManyField(Flight, related_name='passengers')
Explications :
- One-to-One Relationship:
- L'aéroport a une relation univoque avec le gestionnaire à l'aide du champ models.OneToOneField.
- Le champ related_name='managed_airport' permet d'effectuer une recherche inversée du gestionnaire vers l'aéroport.
- One-to-Many Relationship:
- Flight possède une clé étrangère vers Airport pour departure_airport et arrival_airport.
- Les éléments related_name='departures' et related_name='arrivals' permettent d'effectuer des recherches inversées de l'aéroport vers le vol.
- Many-to-Many Relationship:
- Un passager a une relation de plusieurs à plusieurs avec un vol en utilisant models.ManyToManyField.
- Le champ related_name='passengers' permet d'effectuer des recherches inverses de Flight à Passenger.