使用queryset.update增加datetime字段

时间:2010-10-01 21:47:44

标签: python django datetime django-orm

我的模型看起来像这样

class MyModel(models.Model):
    end_time = DateTimeField()

这就是我想要实现的目标:

m=MyModel.objects.get(pk=1)
m.end_time += timedelta(seconds=34)
m.save()

但是我想用update()来避免竞争条件:

MyModel.objects.filter(pk=1).update(end_time=F('end_time')+timedelta(seconds=34))

但它不起作用。这是可能的django ORM还是原始SQL唯一的选择?

1 个答案:

答案 0 :(得分:2)

这是完全可能的。不确定你是否正在查看end_time的缓存值,但这是我刚刚运行的测试:

>>> e = Estimate.objects.get(pk=17)
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 8)
>>> Estimate.objects.filter(pk=17).update(departure_date=F('departure_date')+timedelta(seconds=34))
1
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 8)
>>> e = Estimate.objects.get(pk=17)
>>> e.departure_date
datetime.datetime(2010, 8, 12, 0, 1, 42)