如何使用update仅设置django DateTimeField的小时

时间:2017-07-24 10:02:27

标签: django orm django-queryset

我有一长串具有字段的条目

date=models.DateTimeField(default=timezone.now)

此字段仅用作DateField,现在我将其更改为datetime。 迁移后,现有条目的默认小时设置为midgnig(00)。我想更新所有条目到上午9点。

我想要这样的事情:

Entry.objects.all().update(date__hour=9)

但这不起作用,因为它引发和例外:

django.core.exceptions.FieldDoesNotExist:条目没有名为'date__hour'的字段

有什么建议吗? 感谢

编辑1:列表条目很大,超过100万条目。因此,我想要一个数据库批量更新,而不是逐个解决方案。

1 个答案:

答案 0 :(得分:3)

我现在没有项目要测试。但你能尝试这样吗。

for e in Entry.objects.all():
    e.date += timedelta(0, 9*3600)
    e.save()

上面的内容将在每个对象的00小时内完成。但是如果你想用9 AM静态替换日期对象,它们在每个日期对象中具有不同的值。你可以这样做。

for e in Entry.objects.all():
    e.date = e.date.replace(hour=9)
    e.save()

希望这能解决你的问题。