2015-07-24 22 views
6

Route modelinde, bu yol boyunca sıralı bir durak listesini saklayan bir modelim var. Bu ilişkiyi modellemeye nasıl başlamalıyım? Orada bir yol boyunca birçok Duraklar vardır ve durur birden yollarına ait olabilir beriDjango Model alanı: Yabancı Anahtarların Sıralı Listesi

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

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

cevap

2

, ben bu ilişkiyi saklamak için ManyToMany kullanırsınız. İlişkile ilgili verileri saklamak için bir rota belirtmek üzere through modelini belirtebilirsiniz. Sipariş bilgisi eklemek için birçok seçenek var. Bir naif yol, aşağıdaki gibi bir Tamsayı sipariş alanına sahip olmak ya da varış emrini varış zamanı yoluyla saklamak olabilir. Bu yollar sık ​​sık değişmezse, IntegerField korkunç bir uygulama değildir. Ancak, eğer sık ​​sık değişiyorlarsa, alanları güncellemeniz gerekirdi .... ideal değil.

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() 
+0

Sipariş edilen bilgilerin yukarıdaki naif yollardan ayrı olarak saklanabileceği başka yollar nelerdir? – anon

İlgili konular