【问题标题】:Django Model field : Ordered List of Foreign KeysDjango 模型字段:外键的有序列表
【发布时间】:2015-10-14 14:22:33
【问题描述】:

我有一个Route 模型,它应该存储沿该路线的有序站点列表。我应该如何对这种关系进行建模?

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

class Route(models.Model):
    stops_list = # Ordered list of stops on the route

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    由于一条路线上有许多停靠点,并且停靠点可能属于多条路线,我将使用ManyToMany 来存储这种关系。您可以指定through 模型来存储有关关系的数据,例如预计路线何时到达此站点。有许多选项可以添加订单信息。一种天真的方法是使用如下的整数订单字段,或者您可以通过到达时间隐式存储订单。如果这些路由不经常更改,则 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()
    

    【讨论】:

    • 除了上述幼稚的方式之外,还有哪些其他方式可以存储有序信息?
    猜你喜欢
    • 2012-02-18
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2020-09-09
    • 1970-01-01
    • 2011-04-30
    • 2014-08-13
    相关资源
    最近更新 更多