Python 如何在模板中减去两个django日期

Python 如何在模板中减去两个django日期,python,django,date,django-templates,Python,Django,Date,Django Templates,我想得到从今天到模型字段结束日期之间的天数。 我在我的视图中定义了今天,如下所示。 然后,我将使用天数来检查它是否小于或等于50,这将向元素添加一个类 我的模板 {% for instance in queryset %} <tr> <td>{{forloop.counter}}</td> <td>{{instance.empnumber}}</td> <td>{{in

我想得到从今天到模型字段结束日期之间的天数。 我在我的视图中定义了今天,如下所示。 然后,我将使用天数来检查它是否小于或等于50,这将向
元素添加一个类

我的模板

{% for instance in queryset %}
    <tr>
        <td>{{forloop.counter}}</td>
        <td>{{instance.empnumber}}</td>
        <td>{{instance.name}}</td>
        <td>{{instance.be}}</td>
        <td>{{instance.status}}</td>
        {% if (today - instance.end_date) <= 50 %}
            <td class="highlight">{{instance.start_date}}</td>
            <td class="highlight">{{instance.end_date}} : {{ instance.end_date|timeuntil:today }}</td>
        {% else %}
            <td>{{instance.status_start_date}}</td>
            <td>{{instance.status_end_date}}</td>
        {% endif %}
    </tr>
{% endfor %}

我将在Employee对象上创建一个方法

class Employee(models.Model):
    ...
    def ends_within_50_days(self):
        return (date.today() - self.end_date).days <= 50

正如前一个答案中所建议的,您可以在模型类中创建一个方法,或者使用属性

假设你有这样的东西:

from datetime import date
from django.db import models

class Employee(models.Model):
    end_date = models.DateField()
    # ... rest ...

    @property
    def age_in_days(self):
        today = date.today()
        result = self.end_date - today
        return result.days
在您的模板中,您可以检查它是否少于50天:

{% if instance.age_in_days <= 50 %}

方法名称为
在\u 50天内结束\u
。这意味着,从今天起,在未来50天内,入境将在某个时间点结束。但是,该方法检查条目是否在过去50天内结束。你认为重命名该方法会有利于代码的可读性和可维护性吗?这对我来说很有效,但必须将
result=end\u date-today
更改为
result=self.end\u date-today
@MattG谢谢你的更正,我编辑了答案。
from datetime import date
from django.db import models

class Employee(models.Model):
    end_date = models.DateField()
    # ... rest ...

    @property
    def age_in_days(self):
        today = date.today()
        result = self.end_date - today
        return result.days
{% if instance.age_in_days <= 50 %}
def ended_in_the_last_50_days(self):
    return self.age_in_days <= 50