昨天我花了一天的大部分时间试图找到一个答案,但是我想不出如何把装潢师添加到模型中。
目标:根据用户输入的天数计算日期。用例:用户输入“开始日期”,以及表单中的天数。例如,用户输入的开始日期为1/1/2017,天= 5,calc日期应为1/6/2017。
我无法得到计算出的字段来完成我的模板。
下面的代码片段。
#models.py
from datetime import datetime, timedelta
from django.db import models
from django_extensions.db.models import TimeStampedModel
from django.urls import reverse
class Lease(TimeStampedModel):
location_name = models.CharField(max_length=120)
contingency_start_date = models.DateField(null=True, blank=True)
contingency_period_in_days = models.IntegerField(default=0)
...
def __str__(self):
return self.location_name
@property
def get_contingency_end_date(self):
return datetime.date(self.contingency_start_date) +
timedelta(days=self.contingency_period_in_days)views.py
class LeaseDetailView(generic.DetailView):
model = Lease
def get_context_data(self, **kwargs):
context = super(LeaseDetailView, self).get_context_data(**kwargs)
context['options_list'] = Option.objects.all()
return contextdetail.html
<li><strong>Start date</strong> {{ lease.contingency_start_date }}</li>
<li><strong>contingency_in_days </strong> {{ lease.contingency_period_in_days }}</li>不工作
<li><strong>End date: </strong> {{ lease.get_contingency_end_date }}</li>发布于 2017-01-30 21:12:39
在访问@propery方法时,就像普通的属性一样,调用它为contingency_end_date。不把get作为前缀。考虑使用性质性。
您不必将日期字段包装到datetime.date中。当从数据库获取时,它已经是一个date对象。
@cached_property
def contingency_end_date(self):
return self.contingency_start_date +
timedelta(days=self.contingency_period_in_days)在模板中访问它应该与{{ lease.contingency_end_date }}一起工作
您是否验证了您的lease实例实际上有一个contingency_start_date集?
https://stackoverflow.com/questions/41945331
复制相似问题