【发布时间】:2017-04-27 20:20:37
【问题描述】:
我正在使用 Django 构建一个巴士预订网站。用户填写From、To、巴士类型(普通或沃尔沃)和日期。结果显示该特定日期该路线上可用的巴士。我制作了三张表——巴士、路线和频率。您可以在此处查看我的 models.py 和 views.py -https://dpaste.de/Oi6a 我将日期转换为一周中的相应日期。我已经过滤掉了公交车,但是,我想在模板上显示时间。这是我的views.py代码的一部分:
def select(request):
bus_type = request.GET.get('bus_type')
bus_from = request.GET.get('bus_from')
bus_to = request.GET.get('bus_to')
date_string = request.GET.get('date')
date = datetime.strptime(date_string, '%Y-%m-%d')
day = calendar.day_name[date.weekday()]
kwargs = { '{0}__range'.format(day): ["00:00:00", "23:59:59"],}
qs = Frequency.objects.filter(bus__type_of_bus=bus_type, bus__route__location_from=bus_from, bus__route__location_to=bus_to, **kwargs)
context = {'qs': qs, 'date':date_string,}
template = 'select.html'
return render(request, template, context)
如您所见,qs 过滤可用的总线,然后传递给模板。这是模板的一部分:
<div id="pricing-table" class="clear">
{% for info in qs %}
<div class="price_block">
<h3>{{ info.bus.type_of_bus }}<span>{% if info.bus.type_of_bus == 'Volvo' %} Rs 550 {% else %}Rs 330 {% endif %}</span></h3>
<a href="{% url 'book:seats' %}"rel="follow" rel="noreferrer" class="signup" type="submit">Book</a>
<ul>
<li><b>Bus Number -</b> {{ info.bus.bus_number }}</li>
<li><b>Route -</b> {{ info.bus.route }}</li>
<li><b>Date -</b> {{ date }}</li>
<li><b>Time -</b> {{ info.day }}</li>
</ul>
</div>
在这个 HTML 文件的最后一行,我添加了 info.day。我想要的是这显示巴士在给定日期的运行时间。例如,如果有人在 4 月 29 日搜索公共汽车。 4 月 29 日将转换为相应的日期,即星期五。频率表有'Monday'、'Tuesday'、'Wednesday'、'Thursday'、'Friday'、'Saturday'和'Sunday'作为属性,这些都是TimeField()。 qs 过滤总线并传递给模板。我希望 {{ info.day }} 显示公共汽车运行的时间。相反,它什么也没显示。但是当我将 {{ info.day }} 更改为 {{ info.Friday}} 时,它开始显示时间。每次搜索公共汽车时,如何在无需手动更改 {{ info.(here) }} 中的日期的情况下显示时间。我没有说得很清楚,但我希望你能理解。如果你不知道,请告诉我。
【问题讨论】: