我有一个Route
模型,它应该存储沿该路线的有序停靠列表。我应该如何建立这种关系?
class Stop(models.Model):
name = ..
latitude = ..
longitude = ..
class Route(models.Model):
stops_list = # Ordered list of stops on the route
答案 0 :(得分:2)
由于路线上有许多停靠点,并且停靠点可能属于多条路线,因此我会使用ManyToMany来存储此关系。您可以指定through模型来存储关系的数据,例如路线预计到达此站的时间。添加订单信息有很多选项。一种天真的方式是拥有如下的整数订单字段,或者您可以通过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()