【问题标题】:How to learn to represent complicated relationship in Django model?如何学习在 Django 模型中表示复杂的关系?
【发布时间】:2017-04-06 15:27:04
【问题描述】:

考虑一个火车票预订应用程序。有许多城市、车站和火车

每个城市都有一个/多个车站。很明显,一个车站不能在多个城市。每个车站接收一列/多列火车。每列火车都会经过一个或多个车站,最后停在一个固定的(共同的)目的地。

现在我想制作一个表格,用户可以选择他的城市,同一城市的车站,然后是火车(该城市的车站接收),最后预订火车。
这是我到现在为止所做的。

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)

请就如何正确建立关系提出建议,因为我无法为所选城市显示正确的车站,同样,我无法为所选城市和车站显示火车。

【问题讨论】:

    标签: django django-models orm django-forms


    【解决方案1】:

    您可以使用_set 查找城市中的车站

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

    有关示例,另请参阅文档 herehere

    【讨论】:

    • 谢谢。我确实有点明白了。我想问的是,假设我在 forms.py 中创建了一个名为 BookTicket 的表单,其中包含字段城市、车站和火车。现在,如果用户从下拉列表中选择一个城市,则对应于站的下拉菜单应自动更新,以便(城市,站)是有效数据。同样,(城市、车站、火车)也应该是有效数据。你有什么建议做同样的事情吗?
    • 感谢您的回答。在下拉菜单中,您可以定义应用作选择的查询集。但是,您希望根据另一个字段的选择动态更新它。据我所知,您必须为此使用一些客户端代码。例如。通过使用例如发送城市选择Jquery 和 Ajax 到服务器(当用户选择一个城市时),从数据库中获取查询集(例如城市中的车站)并返回有效车站的 jsonresponse,然后您可以使用它来更新车站字段中的选择。没那么容易......祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2018-04-28
    相关资源
    最近更新 更多