Django 似乎没有考虑夏令时
Django does not seem to account for DayLightSavings
在我的模型中,我想在每次保存 UserAnwser
对象时更新 Submission
对象的 last_edited
值。
为此我写了下面的代码
from django.utils import timezone
...
class UserAnswer(models.Model):
answer = models.FloatField()
question = models.ForeignKey(Question, related_name='answers')
submission = models.ForeignKey(AssessmentSubmission, related_name='answers')
#Update submission.last_edited on answer.
def save(self, *args, **kwargs):
submission = self.submission
submission.last_edited = timezone.now
submission.save()
super(UserAnswer, self).save(*args, **kwargs)
我在 settings.py
文件中设置了正确的时区:
LANGUAGE_CODE = 'nl'
TIME_ZONE = 'Europe/Amsterdam'
USE_I18N = True
USE_L10N = True
USE_TZ = True
然而,每次我更改答案并在我们的 django-rest api 中查找 submission.last_edited 值时,时间都比实际时间晚 1 小时。就好像时间显示在 'summer time' 中并且 DST 处理不正确一样。
例如,如果我在 13:30
编辑答案,我们的 api 将 return 12:30
由于 settings.TIMEZONE
已经设置并且我正在使用 django 的 django.utils timezone 对象,所以它应该都可以工作。
特别是因为管理中显示的时间是正确的,所以它在我们的 API 中的某个地方出错了。然而我们的序列化器并没有对退出做任何事情,所以我不清楚哪里出了问题。
class AssessmentSubmissionSerializer(serializers.ModelSerializer):
comments = CommentedItemSerializer(read_only=True, many=True)
class Meta:
model = am.AssessmentSubmission
fields = ('user', 'submission_date', 'start_date', 'last_edited', 'shared_with', 'assessment', 'scores', 'user_answers', 'comments', )
有人能指出我正确的方向吗?
已修复!
感谢 iklinac 的回复,我发现问题出在我们的 Django-rest 框架代码中。
我通过following Ramast his instructions within this question
解决了
在我的模型中,我想在每次保存 UserAnwser
对象时更新 Submission
对象的 last_edited
值。
为此我写了下面的代码
from django.utils import timezone
...
class UserAnswer(models.Model):
answer = models.FloatField()
question = models.ForeignKey(Question, related_name='answers')
submission = models.ForeignKey(AssessmentSubmission, related_name='answers')
#Update submission.last_edited on answer.
def save(self, *args, **kwargs):
submission = self.submission
submission.last_edited = timezone.now
submission.save()
super(UserAnswer, self).save(*args, **kwargs)
我在 settings.py
文件中设置了正确的时区:
LANGUAGE_CODE = 'nl'
TIME_ZONE = 'Europe/Amsterdam'
USE_I18N = True
USE_L10N = True
USE_TZ = True
然而,每次我更改答案并在我们的 django-rest api 中查找 submission.last_edited 值时,时间都比实际时间晚 1 小时。就好像时间显示在 'summer time' 中并且 DST 处理不正确一样。
例如,如果我在 13:30
编辑答案,我们的 api 将 return 12:30
由于 settings.TIMEZONE
已经设置并且我正在使用 django 的 django.utils timezone 对象,所以它应该都可以工作。
特别是因为管理中显示的时间是正确的,所以它在我们的 API 中的某个地方出错了。然而我们的序列化器并没有对退出做任何事情,所以我不清楚哪里出了问题。
class AssessmentSubmissionSerializer(serializers.ModelSerializer):
comments = CommentedItemSerializer(read_only=True, many=True)
class Meta:
model = am.AssessmentSubmission
fields = ('user', 'submission_date', 'start_date', 'last_edited', 'shared_with', 'assessment', 'scores', 'user_answers', 'comments', )
有人能指出我正确的方向吗?
已修复!
感谢 iklinac 的回复,我发现问题出在我们的 Django-rest 框架代码中。
我通过following Ramast his instructions within this question
解决了