Added Flight class

This commit is contained in:
2025-09-29 22:05:26 -05:00
parent 5b439485e1
commit 8f8c3f232e
5 changed files with 93 additions and 1 deletions

View File

@@ -1,8 +1,9 @@
from django.contrib import admin from django.contrib import admin
from .models import Carrier, AircraftBase, Equipment, Aerodrome from .models import Carrier, AircraftBase, Equipment, Aerodrome, Flight
# Register your models here. # Register your models here.
admin.site.register(Carrier) admin.site.register(Carrier)
admin.site.register(AircraftBase) admin.site.register(AircraftBase)
admin.site.register(Equipment) admin.site.register(Equipment)
admin.site.register(Aerodrome) admin.site.register(Aerodrome)
admin.site.register(Flight)

View File

@@ -0,0 +1,35 @@
# Generated by Django 5.2.6 on 2025-09-30 03:00
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('simulator', '0003_alter_aerodrome_country'),
]
operations = [
migrations.AlterField(
model_name='carrier',
name='country',
field=models.CharField(max_length=3),
),
migrations.CreateModel(
name='Flight',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('flight_number', models.PositiveIntegerField(max_length=4)),
('departure_time', models.DateTimeField()),
('arrival_time', models.DateTimeField()),
('carrier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='flights', to='simulator.carrier')),
('destination', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='arrivals', to='simulator.aerodrome')),
('equipment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='flights', to='simulator.equipment')),
('origin', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='departures', to='simulator.aerodrome')),
],
options={
'constraints': [models.UniqueConstraint(fields=('carrier', 'flight_number'), name='unique_flight_per_carrier')],
},
),
]

View File

@@ -0,0 +1,19 @@
# Generated by Django 5.2.6 on 2025-09-30 03:03
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('simulator', '0004_alter_carrier_country_flight'),
]
operations = [
migrations.AlterField(
model_name='flight',
name='flight_number',
field=models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(9999)]),
),
]

View File

@@ -1,3 +1,4 @@
from .carrier import Carrier from .carrier import Carrier
from .aircraft import Equipment, AircraftBase from .aircraft import Equipment, AircraftBase
from .aerodrome import Aerodrome from .aerodrome import Aerodrome
from .flight import Flight

View File

@@ -0,0 +1,36 @@
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}"