【发布时间】:2018-05-08 23:12:29
【问题描述】:
如何在 Django 视图中获得与此 MySQL 脚本等效的内容?出发城市、到达城市和旅行日期将由用户输入。
这是我的模型
class Driver(models.Model):
first_name = models.CharField(max_length=30, null=True, blank=False)
last_name = models.CharField(max_length=30, null=True, blank=False)
class Schedule(models.Model):
depart_time = models.TimeField()
arrive_time = models.TimeField()
class TravelDate(models.Model):
start_date = models.DateField(null = True)
interval = models.IntegerField(null = True)
class Route(models.Model):
depart_city = models.CharField(max_length=50, null=True, blank=False)
arrive_city = models.CharField(max_length=50, null=True, blank=False)
driver = models.ForeignKey(Driver)
schedule = models.ForeignKey(Schedule)
traveldate = models.ForeignKey(TravelDate)
这是我的 MySQL 脚本。这在我在 MySQL 工作台上运行时有效,但我不确定如何将其转换为 Django Query
SELECT busapp_route.depart_city, busapp_route.arrive_city, busapp_driver.first_name, busapp_schedule.depart_time
FROM (((busapp_route INNER JOIN busapp_driver ON busapp_route.driver_id = busapp_driver.id)
INNER JOIN busapp_schedule ON busapp_route.schedule_id = busapp_schedule.id)
INNER JOIN busapp_traveldate ON busapp_route.traveldate_id = busapp_traveldate.id)
WHERE busapp_route.depart_city='Tropoje' AND busapp_route.arrive_city='Tirane'
AND (DATEDIFF('2017-11-26', busapp_traveldate.start_date) % busapp_traveldate.interval = 0);
【问题讨论】:
-
你想达到什么目的?只导入数据?重建应用程序?作为 Django 的强项之一的 Django ORM 将做得更多。
-
我基本上坚持尝试在 Django 中重复事件。我正在建立一个网站,驾驶员在其中注册并指定路线 A --> B、出发时间、到达时间以及他们执行这条路线的频率(每天、每隔一天、每 3 天......)。当用户在特定日期搜索来自城市 A --> B 的巴士时,我不想显示当天运行的巴士。
-
只是想如果我猜对了,您正在构建一个应用程序来保持从一个城市到另一个城市的巴士路线?还是您在谈论一些当地的公共交通工具?在后一种情况下,事情可能会变得非常容易,因为您可以简单地定义工作日......
标签: python mysql django django-models django-views