这是我的models.py
class HolidayListView(ListView):
context_object_name = 'national_holidays'
model = models.NationalHoliday
我有一个像holiday_list.html
<td>{{ holiday.date_from }}</td>
<td>{{ holiday.date_to }}</td>
<td>{{ holiday.date_to - holiday.date_from }}</td>
如何使<td>{{ holiday.date_to - holiday.date_from }}</td>
工作,我应该使用HolidayListView吗?...
或
可以直接在我的模板上吗?...
谢谢你!答案 0 :(得分:1)
您可以使用Custom template tags and filters
执行此操作from django import template
register = template.Library()
@register.filter
def substract_date(date_to,date_from):
return (date_to - date_from).days
html将是
<td>{{ holiday.date_to|substract_date:holiday.date_from }}</td>
答案 1 :(得分:1)
您可以使用自定义模板过滤器,但一般来说Django建议在视图或模型层中进行此类计算,实际上这就是为什么Django模板在允许的操作方面提供的灵活性较低。
你可以如何实现它:
型号:
class NationalHoliday(models.Model):
# Model attributes...
@property
def length_days(self):
return (self.date_to - self.date_from).days
模板:
<td>{{ holiday.date_from }}</td>
<td>{{ holiday.date_to }}</td>
<td>{{ holiday.length_days }}</td>
答案 2 :(得分:0)
在模板级别,您可以使用mathfilters
对我非常有用。然后您可以执行以下操作:
<td>{{ holiday.date_to|sub:holiday.date_from }}</td>
@maxim指出,这不是理想的方法。最好的方法仍然是在视图或模型上进行操作。但这确实可以满足我的需求。