Webapp для общественного транспорта в DJANGO : модели (отношения "многие-ко-многим") для транспортных систем и маршрутов

Мне нужно сделать веб-приложение, которое позволило бы пользовательской базе создавать оповещения о диспетчерах в общественном транспорте в большом городе. В основном это будут поезда и автобусы.

Я совсем запутался в том, как создать модель. Я уже создал Alert, который имеет атрибут станции с отношением один-к-одному, а также атрибут линии. У меня есть две модели: модель Станция и модель Линия.

Сейчас каждый вид транспорта (автобус/поезд) имеет линию, станции и расписание. Я использовал поля "многие ко многим" в модели Line, но я не знаю, как упорядочить станции, так как автобус должен проходить через каждую станцию упорядоченно, и как связать это с расписанием. Я думал о создании другой модели "Line_Station" с каждым экземпляром, имеющим атрибуты Line, Station и Order, но это не кажется оптимальным для маршрутов, имеющих много станций, поскольку маршрут будет каждым экземпляром Line_Station для одного и того же атрибута Line. Я новичок в Django и еще не имел возможности работать с отношениями базы данных, но мне кажется, что эту проблему можно решить с помощью отношений "многие-ко-многим".

(Transportations/models.py)

class Station(models.Model):
    Station_name = models.CharField(max_length=200)
    Station_adress = models.CharField(max_length=300)
    Station_vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE)


class Line(models.Model):
    Line_number = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)])
    Line_name = models.CharField(max_length=200, blank=True, null=True)
    Line_vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE)
    Line_stations = models.ManyToManyField(Station)


class Line_station(models.Model):
    line = models.ForeignKey(Line, on_delete=models.CASCADE)
    station = models.ForeignKey(Station, on_delete=models.CASCADE)
    order = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(60)])

Есть ли более оптимальный способ решения этой проблемы? Дело в том, что я хотел бы создавать линии в моем django admin и оттуда добавлять станции и выбирать порядок. Если я думаю, что это приложение привлечет много пользователей, мне кажется, что создание еще двух моделей (маршруты и расписания) может создать слишком много запросов

Вот модель Alert, если она представляет интерес :

(Alerts/models.py)

class Alert(models.Model):
    alert_whistleblower = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    alert_timestamp = models.DateTimeField(auto_now_add=True)
    alert_station = models.ForeignKey(Station, on_delete=models.CASCADE)
    alert_line = models.ForeignKey(Line, on_delete=models.CASCADE)
    alert_remarks = models.TextField(blank=True, null=True)

    def get_absolute_url(self):
        return reverse('alerts:detail', kwargs={'pk':self.pk})

На данный момент я использовал отношение Many-to-Many на модели Line, используя through = 'routes'.

class Line(models.Model):
    Line_number = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)])
    Line_stations = models.ManyToManyField(Station, through="Route")

class Route(models.Model):
    line = models.ForeignKey(Line, on_delete=models.CASCADE)
    station = models.ForeignKey(Station, on_delete=models.CASCADE)
    order = models.IntegerField()

Я все еще не уверен в этом. Должно ли поле "многие-ко-многим" быть у Station ? Должно ли оно быть у обоих? Я все еще не знаю, как сделать модель расписания поверх этого. Упорядочивание каждого экземпляра Route, кстати, довольно болезненное занятие, поскольку я хочу, чтобы оно автоматически инкрементировалось для экземпляра линии.

Вернуться на верх