我的模型中有2个字段名为餐厅,如下所示:
UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil)
我有一个视图,我正在过滤我的模型,为我的模板提供一个列表,如下所示:
start_time = models.TimeField(blank=True)
end_time = models.TimeField(blank=True)
在我的模板中我有:
restaurants = Restaurant.objects.filter(location__icontains = location)
return render_to_response('restaurant.html', { 'user': request.user, 'restaurant': restaurants }, RequestContext(request))
我正在尝试查看是否有一个模板标记可用于检查当前时间是否介于{% if restaurant %}
<ul class="list-group">
{% for r in restaurant %}
<li class="list-group-item">
<h5>
<legend>{{ r.restaurant_name|capfirst }}</legend>
<a href="/order/#/showmenu/{{ r.id }}" type="button" class="btn btn-primary pull-right">View Menu</a>
</h5>
</li>
{% endfor %}
</ul>
{% endif %}
和start_time
之间,然后显示{ {1}}按钮,否则不显示。
如果我能找到一个文件,我已经阅读了文档,但也许我错过了它。任何帮助将不胜感激。
尝试1:
end_time
答案 0 :(得分:4)
这不是你用模板标签做的事情。一种选择是在餐厅模型上提供一种方法:
def is_open(self):
return self.start_time <= datetime.datetime.now().time() < self.end_time
并检查模板中的{% if restaurant.is_open %}
。
或者,您可以更改查询,以便它只返回已打开的餐馆:
now = datetime.datetime.now().time()
restaurants = Restaurant.objects.filter(
location__icontains=location,
start_time__lte=now,
end_time__gte=now
)
答案 1 :(得分:4)
我不会使用模板标记,因为这是业务逻辑的一部分。 例如,考虑在模型中添加属性:
class Restaurant(models.Model):
@property
def is_open(self):
now = datetime.datetime.now().time()
return self.start_time() <= now <= self.end_time()
这样,您已在模型级别定义了可靠的业务规则,并且能够在模板中使用它:
{% if r.is_open %}
<a>your link</a>
{% endif %}
答案 2 :(得分:1)
我认为您试图寻找的模板标签不存在。但好消息是您可以为Restaurant模型实例创建自己的方法或属性。
只需在餐厅模型中创建一个方法,该方法应执行以下操作:
import datetime
from django.db import models
class Restaurant(models.Model):
start_time = models.TimeField(blank=True)
end_time = models.TimeField(blank=True)
def is_open_now(self):
return self.start_time <= datetime.datetime.now() < self.end_time
然后,在您的模板上:
{% if restaurant %}
<ul class="list-group">
{% for r in restaurant %}
<li class="list-group-item">
<h5>
<legend>{{ r.restaurant_name|capfirst }}</legend>
{% if r.restaurant.is_open_now %}
<a href="/order/#/showmenu/{{ r.id }}" type="button" class="btn btn-primary pull-right">View Menu</a>
{% endif %}
</h5>
</li>
{% endfor %}
</ul>
{% endif %}