Django模型字段:外键的有序列表

ano*_*non 7 django django-models django-orm

我有一个Route模型应该存储沿该路线的有序停靠列表.我该如何建模这种关系?

class Stop(models.Model):
    name = ..
    latitude = ..
    longitude = ..

class Route(models.Model):
    stops_list = # Ordered list of stops on the route
Run Code Online (Sandbox Code Playgroud)

Mar*_*way 5

由于一条路线上有很多站点,并且站点可能属于多条路线,因此我将使用ManyToMany来存储这种关系。您可以指定一个直通模型来存储有关关系的数据,例如路线预计到达此站点的时间。添加订单信息的选项有很多。一种简单的方法是使用如下所示的整数订单字段,或者您可以通过arrival_time隐式存储订单。如果这些路由不经常改变,IntegerField 并不是一个糟糕的实现。但是,如果它们确实经常更改,那么您将需要更新字段......这并不理想。

class Stop(models.Model):
    name = ..
    latitude = ..
    longitude = ..

class Route(models.Model):
    stops_list = models.ManytoManyField(Stop, through='StopInfo') # Ordered list of stops on the route

class StopInfo(models.Model):
    """ Model for storing data about the Stop/Route relationship """
    stop = models.ForeignKey(Stop)
    route = models.ForeignKey(Route)
    arrival_time = models.DateTimeField(auto_now_add=True)
    order = models.PositiveIntegerField()
Run Code Online (Sandbox Code Playgroud)