Django模板日期比较

时间:2018-04-16 06:34:07

标签: python django jinja2

我试图比较我的html模板中的日期。如果当前日期介于开始日期和结束日期之间,则显示可用日期。但是,即使我的日期介于开始日期和结束日期之间,我当前的代码也仅显示Not available

now变量由dateTime.now()生成并传递给html。使用Django' s April 16, 2018, 1:44 p.m.

,日期采用DateTimeField格式
<tbody>
    {% for key in keys%}
    <tr>
        <th scope="row">{{key.name}}</th>
        <td>{{key.lock}}</td>
        <td>{{key.start_date}}</td>
        <td>{{key.end_date}}</td>
        {% if now >= key.start_date and now <= key.end_date %}
        <td>Available</td>
        {% else %}
        <td>Not Available</td>
        {% endif %}
        <td><button type="button" class="btn btn-primary btn-rounded btn-sm my-0">Unlock</button></td>
    </tr>
    {% endfor %}
</tbody>

来自views.py的代码

    keys = Key.objects.filter(user=request.user)
    dateTimeNow = datetime.now()
    args = {'keys': keys, 'now': dateTimeNow}
    return render(request, self.template_name, args)

1 个答案:

答案 0 :(得分:0)

将以下方法添加到Key模型中:

@property
def is_now(self):
    """
    Returns whether the key is active now
    :return:
    """
    return self.start_date < timezone.now() < self.end_date

现在在你的模板中:

 {% for key in keys%}
    {% if key.is_now %} 
        available
    {% endif %}
 {% endfor %}