Django表单中的DateTimeField转为UTC
我有一个小的Django应用,里面有一个表单,可以把一些数据保存到数据库里。
这是表单的代码:
class SomeForm(forms.Form):
time = forms.DateTimeField()
...
这是我用来保存数据的视图代码:
class AccountAddIncome(View):
def save(self, form):
model = Model(
time=form.cleaned_data['time']
)
model.save()
def post(self, request, *args, **kwargs):
form = SomeForm(request.POST)
if form.is_valid():
self.save(form)
return redirect(self.success_url)
else:
...
我遇到的问题是,Django的后台提示我:"注意:你的时间比服务器时间快了1小时."
我在我的Ubuntu服务器上用date
命令查看时间,发现和我电脑上的时间完全一样。
但是,当我把这个对象保存到数据库后,再进行以下查询:
Model.objects.filter(time__lt=timezone.now())
Django在接下来的一个小时内不会显示之前保存的模型。如果我去后台,把时间调回一个小时,Django就会显示那个对象。
所以,我的问题是,管理Django中的日期时间对象,最好的做法是什么?
我想把所有的时间都保存为UTC格式,但我不知道怎么把表单中的日期时间转换成UTC。
1 个回答
-5
去你Django项目的settings.py文件。
把时区设置的那一行注释掉,然后使用 TIME_ZONE = timezone.now()。
from django.utils import timezone
TIME_ZONE = timezone.now()
# TIME_ZONE = 'UTC'
# USE_I18N = True
# USE_L10N = True
# USE_TZ = True
这样你就再也看不到这个提示了 - 注意:你的时间比服务器时间快了1小时。