DateTimeField并在视图中更改日期

时间:2011-07-13 10:22:20

标签: django

我有这段代码

class MyModel(models.Model):
    date = models.DateTimeField(blank=True, default=datetime.now)

在models.py中。在视图中我得到了对象:

obj = MyModel.objects.get(id=2)

我希望改变今年的日期。怎么做?

2 个答案:

答案 0 :(得分:2)

如果你需要确切地说是闰年:

import datetime, calendar

obj = MyModel.objects.get(id=2)
next_date = obj.date + datetime.timedelta(days=365)
if calendar.isleap(obj.date.year) and obj.date <= datetime.datetime(obj.date.year, 2, 29) or \
   calendar.isleap(next_date.year) and obj.date > datetime.datetime(obj.date.year, 2, 28):
    next_date += datetime.timedelta(days=1)
obj.date = next_date
obj.save()

答案 1 :(得分:1)

如果365天足够接近您,最简单的解决方案是:

import datetime

obj = MyModel.objects.get(id=2)
obj.date = obj.date + datetime.timedelta(days=365)
obj.save()

如果您需要更高的精度(例如闰年),请使用mxdatetime包中的相对日期时间:

http://www.egenix.com/products/python/mxBase/mxDateTime/doc/#RelativeDateTime