2015-08-20 2 views
0

Я хотел бы сохранить несколько станций и несколько поездов в моей базе данных. Я планировал иметь каждую станцию ​​как одну модель, а каждый поезд - как одну модель.Django Дизайн модели для маршрутов поездов

Но я хотел бы понять, как мы должны хранить каждый маршрут поезда динамически, используя модели станции.

Для примера, у нас есть станции A, B, C, D, E

И поезд t1 маршрут ACBDE И поезд t2 маршрут ABE

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

Благодаря

+0

Бит трудно сказать без дополнительной информации, но похоже, что вам нужна другая таблица, называемая маршрутами. – e4c5

ответ

0

Что-то, как это должно работать для вас от модели данных точки стенда.

class Station(models.Model): 
    pass 

class Route(models.Model): 
    class Meta: 
     # Specify that the train and index are unique together to prevent 
     # any duplicate stations at the same index value at the db level. 
     # You'll probably want to validate this in the application logic as well. 
     unique_together = ('station', 'index') 
    station = models.ForeignKey('train.Station') 
    train = models.ForeignKey('train.Train') 
    index = models.IntegerField() 

class Train(models.Model): 
    stations = models.ManyToManyField('train.Station', through=Route) 
0

С вашим подходом вы думаете о станциях, как будто все они связаны. Для каждой станции у вас может быть поле many2many, которое позволяет вам «подключать» станции друг к другу. Затем вы можете использовать три модели:

  • Поезда
  • Маршруты
  • Станция

станция подключена к станциям. Маршруты имеют начальную и конечную точку. Поезда связаны с маршрутами (поскольку один поезд может работать на нескольких маршрутах, или один маршрут может транспортировать несколько поездов). Вы также можете программно вычислить (графики), сколько станций, которые тренируются, должны принимать между началом и целью.

+0

фактически каждый поезд имеет фиксированный маршрут с остановками, стартовой станцией и конечной станцией. Мы можем думать, что это так, как местный поезд делает тоже на одном маршруте, например, поезда метро в городе, где время в пути меньше 1-2 часов – bindaas

Смежные вопросы