【问题标题】:Comparing dates in template Django比较模板Django中的日期
【发布时间】:2016-09-15 01:33:54
【问题描述】:

模板中有两个日期,需要在 if 语句中进行比较。

Date1 来自数据元素 {{ endjob.created|date:"Y-m-d" }} 的 created 字段,显示为 2016-09-12

如果来自显示为 2016-09-04 的数组 {{ pay_period.periods.0.0 }},则 Date2

因此,我试图要求仅在 Date1 >= Date2 但我没有得到任何数据时才显示信息。

你能帮我解决如何在 Django 中的模板中冲突日期

这是我的代码:

<tbody>     
{% for endjob in endjob %}
        {% if endjob.created|date:"Y-m-d" >= pay_period.periods.0.0  %}
            <tr>
            <td><a href="{{ endjob.get_absolute_url }}" title="Goto Form">{{ endjob.event.name }}</a><br /></td>
            <td>{{ endjob.event.job_no}} <br /></td>
            <td>{{ endjob.event.job_type}} <br /></td>
            <td>{{ endjob.code }} <br /></td>
            <td>{{ endjob.crewid }}<br /></td>
            <td>{{ endjob.workers }}<br /></td>
            <td>{{ endjob.created|user_tz:user|date:"M j, Y" }}<br /></td>
            </tr>
       {% endif %}
{% endfor %}

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可能正在比较两种不同的数据类型,这就是您没有得到任何结果的原因。通过执行endjob.created|date:"Y-m-d",您将endjob.created 转换为字符串。是的,{{ pay_period.periods.0.0 }} 显示为字符串“2016-09-04”。这就是{{ }} 的作用。但是在表达式endjob.created|date:"Y-m-d" &gt;= pay_period.periods.0.0 中,您将字符串与pay_period.periods.0.0 的原始数据类型进行比较。

    要解决这个问题,只需确保数据类型在比较时匹配。 endjob.created|date:"Y-m-d" &gt;= pay_period.periods.0.0|date:"Y-m-d" 可能你可以侥幸逃脱,但我不建议这样做。除非有很好的理由必须这样做,否则我建议在模板级别以外的其他地方进行比较,然后传递布尔值或调用布尔属性,例如 so

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 2021-02-12
      • 2011-04-17
      • 2013-03-18
      • 2021-12-31
      • 2013-04-06
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多