python - 使用 queryset.update 增加日期时间字段

标签 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 是唯一的选择吗?

最佳答案

这是完全有可能的。不确定您是否正在查看 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)

关于python - 使用 queryset.update 增加日期时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843250/

相关文章:

python - 如何使用python向MySQL表中添加记录?

python - 计算引擎的服务帐户没有足够的云视觉 API 范围

python - 仅计算图像的核心图像数据(不包括元数据)的哈希值

python - 数字列表的平均值,在 Python 列表中存储为字符串

powershell - 确定 Powershell 中不同时区的夏令时状态

javascript - 如何解析 JSON 以在 JavaScript 中接收 Date 对象?

Python周数生成

mysql - Django 按查询分组

python - 在整个过程完成之前使用 FormWizard 并保存表单数据?

mysql - django中数据库查询的问题