使用 queryset.update 增加日期时间字段
我的模型看起来像这样
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 是唯一的选择吗?
My model looks like this
class MyModel(models.Model):
end_time = DateTimeField()
and this is what I'm trying to achieve:
m=MyModel.objects.get(pk=1)
m.end_time += timedelta(seconds=34)
m.save()
but I want to do it with update() to avoid race conditions:
MyModel.objects.filter(pk=1).update(end_time=F('end_time')+timedelta(seconds=34))
but it doesn't work. Is this possible with the django ORM or is raw SQL the only option?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是完全有可能的。不确定您是否正在查看 end_time 的缓存值,但这是我刚刚运行的测试:
This is completely possible. Not sure if you're looking at a cached value for your end_time, but here is a test I just ran: