Python 如何在模板中减去两个django日期
我想得到从今天到模型字段结束日期之间的天数。 我在我的视图中定义了今天,如下所示。 然后,我将使用天数来检查它是否小于或等于50,这将向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
元素添加一个类
我的模板
{% 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