【发布时间】:2011-05-04 20:01:50
【问题描述】:
有没有办法使用 update() 方法增加过滤对象的年份?
我正在使用:
python 2.6.5
django 1.2.1 final
mysql Ver 14.14 Distrib 5.1.41
我知道可以这样做:
today = datetime.datetime.today()
for event in Event.objects.filter(end_date__lt=today).iterator():
event.start_date = festival.start_date + datetime.timedelta(365)
event.end_date = festival.end_date + datetime.timedelta(365)
event.save()
但是,在某些情况下,我更喜欢使用 update() 方法。
# This does not work..
Event.objects.all().update(
start_date=F('start_date') + datetime.timedelta(365),
end_date=F('end_date') + datetime.timedelta(365)
)
通过上面的例子,我得到:
Warning: Truncated incorrect DOUBLE value: '365 0:0:0'
它试图进行的 sql 查询是:
UPDATE `events_event` SET `start_date` = `events_event`.`start_date` + 365 days, 0:00:00, `end_date` = `events_event`.`end_date` + 365 days, 0:00:00
我在 mysql 指南中找到了一些东西,但这是原始 sql!
SELECT DATE_ADD('2008-12-15', INTERVAL 1 YEAR);
有什么想法吗?
【问题讨论】:
-
好像有一张带补丁的公开票:code.djangoproject.com/ticket/10154
标签: mysql django django-queryset