2017-04-06 15 views
0

列車のチケット予約アプリを検討してください。 都市、駅、列車はです。

各都市には1つ以上のステーションがあります。駅は複数の都市にはできないことは明らかです。各ステーションは1つ以上の電車を受信する。各列車は1つ以上の駅を訪れ、最終的には固定の(共通の)目的地に停車します。

ここでは、ユーザーが自分の都市、同じ都市の駅、次に列車(都市の駅が受け取る)を選択して最終的に列車を予約できる形式を作りたいと思います。
これは私が今まで行ってきたことです。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

あなたはまた、いくつかの例のドキュメントherehereを参照してください都市

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

にステーションを見つけるために_setを使用することができます。

+0

ありがとうございました。私はそれをちょっと理解しました。 私が尋ねたいのは、都市、駅、列車のフィールドを含むforms.pyという名前のBookTicketフォームでフォームを作ったとします。ここで、ユーザがドロップダウンから都市を選択すると、ステーションに対応するドロップダウンメニューは自動的に更新され、(都市、駅)が有効なデータとなる。同様に、(都市、駅、列車)も有効なデータでなければなりません。 同じことをお勧めしますか? –

+0

答えを受け入れてくれてありがとう。ドロップダウンメニューでは、選択肢として使用するクエリーセットを定義することができます。ただし、別のフィールドの選択に応じてこれを動的に更新する必要があります。私の知る限り、これにはクライアント側のコードを使用する必要があります。例えば。例えば都市の選択をJqueryとAjaxをサーバーに追加すると(ユーザーが都市を選択したとき)、クエリーセット(たとえば、市の駅)がデータベースから取得され、有効なステーションのjson応答が返され、ステーションフィールドの選択肢が更新されます。それほど簡単ではありません....幸運! – BartDur

+0

[Djangoモデルの選択フィールド - 他のフィールドの選択に依存](http://stackoverflow.com/questions/24431827/django-model-choice-field-depend-on-other-fields-choice) – BartDur

関連する問題