2012-08-02 72 views
0

我试图在Django模板中显示奖励的到期日期。目前,opening_date存储为日期字段,我们将奖励字段存储为整数字段。遗憾的是只是想奖金项添加到开幕日期失败,到目前为止,我已经得到了最远的是:将一个IntegerField添加到Django模板中的Datefield中

{{product_form.instance.opening_date|add:product_form.instance.bonus_term}} 

我有尝试过增加了一个月,但不幸的是我需要整个返回日期显示。

为了更好地了解我想要的是说开幕日期是01/01/2012,奖金期限是12,我想显示01/01/2013的有效日期。我意识到这可能更适合在数据库中使用,但由于之前设置的方式存在大量现有数据,因此无法使用它。

谢谢。

+0

您需要编写自己的模板过滤器或添加另一个上下文变量,尽管您可能能够将日期时间字段格式化为字符串,然后使用添加来连接文本 – 2012-08-02 10:48:06

+0

谢谢,我知道我错过了Django的一项功能,可用于。 – 2012-08-02 11:02:09

+0

当你有一个解决方案,回来后发布它;) – 2012-08-02 11:02:42

回答

0

我认为,对于你的情况下,最好的解决方法是建立在你的模型calcule到期日期model method,然后调用模板的方法:

在模型:

class product(models.Model): 
    opening_date = ... 
    bonus_term = ... 
    def expire_date(self): 
     return self.opening_date + timedelta(days = self.bonus_term) 

在模板中:

{{product_form.instance.expire_date}} 

我确定您会在代码的更多其他行中调用此方法。

+0

完美,我所做的唯一更改是使用relativedelta而不是timedelta代码:return self.opening_date + relativedelta( months = + self.bonus_term) 非常感谢 – 2012-08-02 11:33:23

+0

@Jeff,感谢您分享您的最终解决方案。问候。 – danihp 2012-08-02 11:53:50

相关问题