带有日期时间对象的 Django 设置 models.DateField()
Django setting models.DateField() with a datetime object
最近从 django 1.11 升级到 2.2 后,我正在调试一些失败的测试,我注意到一个我以前没有意识到的行为。
考虑以下代码
from datetime import date, datetime, timedelta
class User(models.Model):
birthday = DateField()
user = User.objects.create(birthday=date.today())
# setting the DateField object with datetime
yesterday_datetime = datetime.now() - timedelta(days=1)
user.birthday = yesterday_datetime
user.save()
user.refresh_from_db()
print(user.birthday) # returns date.today()
我一直假设当 DateField 对象填充了 datetime 对象时,datetime 对象的日期方面将被获取并保存。似乎并非如此,该字段未更新/保存到数据库中。
这是 django 2+ 的行为还是已经有一段时间了?任何人都可以分享他们在这种极端情况下的经验吗?
看来问题与时区有关。您可以使用 datetime 对象设置 DateField 并保存它的日期方面。但必须考虑时区。
最近从 django 1.11 升级到 2.2 后,我正在调试一些失败的测试,我注意到一个我以前没有意识到的行为。
考虑以下代码
from datetime import date, datetime, timedelta
class User(models.Model):
birthday = DateField()
user = User.objects.create(birthday=date.today())
# setting the DateField object with datetime
yesterday_datetime = datetime.now() - timedelta(days=1)
user.birthday = yesterday_datetime
user.save()
user.refresh_from_db()
print(user.birthday) # returns date.today()
我一直假设当 DateField 对象填充了 datetime 对象时,datetime 对象的日期方面将被获取并保存。似乎并非如此,该字段未更新/保存到数据库中。
这是 django 2+ 的行为还是已经有一段时间了?任何人都可以分享他们在这种极端情况下的经验吗?
看来问题与时区有关。您可以使用 datetime 对象设置 DateField 并保存它的日期方面。但必须考虑时区。