2017-04-06 78 views
0

考慮一個火車票預訂應用程序。有很多城市,車站和火車

每個城市都有一個/多個電臺。很明顯,一個電臺不能在一個以上的城市。每個車站接收一列/多列火車。每列火車訪問一個或多個火車站,最後停在固定的(共同的)目的地。

現在我想製作一個表格,用戶可以選擇他的城市,同一城市的電臺,然後是火車(城市的哪個電臺接收),最後預訂火車。
這是我迄今爲止所做的。如何學習在Django模型中表示覆雜的關係?

class City(models.Model): 
    name = models.CharField(max_length=50, help_text="Your city name") 

class Train(models.Model): 
    number = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=50, help_text="Train") 
    city = models.ForeignKey(City) 



class Station(models.Model): 
    city = models.ForeignKey(City) 
    name = models.CharField(max_length=50, help_text="All available stations in your city") 

class BookedTicket(models.Model): 
    city = models.ForeignKey(City) 
    station = models.ForeignKey(Station) 
    train = models.ForeignKey(Train) 

請有關如何正確建立關係,因爲我無法爲所選擇的城市顯示正確的車站,同樣,火車所選擇的城市和車站建議。

回答

0

您可以使用_set找到車站在城市

my_city = City.objects.get(name="my hometown") 
stations_in_city = my_city.station_set.all() 

也看到了一些實例文檔herehere

+0

謝謝。我確實瞭解了一點。 我想問的是,假設我在forms.py中創建一個名爲BookTicket的表單,其中包含城市,車站和火車字段。現在,如果用戶從下拉菜單中選擇城市,則應自動更新與電臺對應的下拉菜單,以便(城市,電臺)爲有效數據。同樣,(城市,車站,火車)也應該是有效的數據。 你有什麼建議可以做同樣的事嗎? –

+0

感謝您接受答案。在下拉菜單中,您可以定義應該用作選項的查詢集。但是,您想要根據另一個字段的選擇來動態更新它。據我所知,你必須爲此使用一些客戶端代碼。例如。通過使用例如發送城市的選擇Jquery和Ajax添加到服務器(當用戶選擇一個城市時),從數據庫獲取查詢集(例如城市中的站點),並返回一個有效站點的json響應,然後用它更新站點字段中的選項。不是那麼容易......祝你好運! – BartDur

+0

檢查這個問題,例如:[Django模型選擇領域 - 取決於其他領域的選擇](http://stackoverflow.com/questions/24431827/django-model-choice-field-depend-on-other-fields-選項) – BartDur