from django.db import models from .carrier import Carrier from .aircraft import Equipment from .aerodrome import Aerodrome from django.core.validators import MinValueValidator, MaxValueValidator class Flight(models.Model): carrier = models.ForeignKey( Carrier, on_delete=models.CASCADE, related_name="flights" ) equipment = models.ForeignKey( Equipment, on_delete=models.CASCADE, related_name="flights" ) origin = models.ForeignKey( Aerodrome, on_delete=models.CASCADE, related_name="departures" ) destination = models.ForeignKey( Aerodrome, on_delete=models.CASCADE, related_name="arrivals" ) flight_number = models.PositiveIntegerField( validators=[MinValueValidator(1), MaxValueValidator(9999)] ) departure_time = models.DateTimeField() arrival_time = models.DateTimeField() class Meta: constraints = [ models.UniqueConstraint( fields=["carrier", "flight_number"], name="unique_flight_per_carrier" ) ] def __str__(self): return f"{self.carrier.icao}{self.flight_number} {self.origin.icao} > {self.destination.icao}"