首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django模型中计算日期?

如何在Django模型中计算日期?
EN

Stack Overflow用户
提问于 2017-01-30 21:00:44
回答 1查看 1.5K关注 0票数 0

昨天我花了一天的大部分时间试图找到一个答案,但是我想不出如何把装潢师添加到模型中。

目标:根据用户输入的天数计算日期。用例:用户输入“开始日期”,以及表单中的天数。例如,用户输入的开始日期为1/1/2017,天= 5,calc日期应为1/6/2017。

我无法得到计算出的字段来完成我的模板。

下面的代码片段。

代码语言:javascript
复制
#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

代码语言:javascript
复制
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 context

detail.html

代码语言:javascript
复制
<li><strong>Start date</strong> {{ lease.contingency_start_date }}</li>
<li><strong>contingency_in_days </strong> {{ lease.contingency_period_in_days }}</li>

不工作

代码语言:javascript
复制
<li><strong>End date: </strong> {{ lease.get_contingency_end_date }}</li>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-30 21:12:39

在访问@propery方法时,就像普通的属性一样,调用它为contingency_end_date。不把get作为前缀。考虑使用性质性

您不必将日期字段包装到datetime.date中。当从数据库获取时,它已经是一个date对象。

代码语言:javascript
复制
@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集?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41945331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档