Django似乎没有考虑DayLightSavings

时间:2018-02-22 13:20:30

标签: django django-timezone

在我的模型中,我想每次保存last_edited对象时更新Submission对象的UserAnwser值。

为此,我已经编写了以下代码

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小时。几乎好像时间是在夏天时间显示的。并且DST处理不正确。 例如,如果我在13:30编辑答案,我们的api将返回12:30

由于已设置settings.TIMEZONE并且我正在使用django的django.utils时区对象,因此它应该全部正常工作。

特别是因为管理员显示的时间是正确的,所以它在我们的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', )
有人能指出我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

修正了它!

感谢iklinac的回复,我发现问题出在我们的Django-rest框架代码中。

我通过following Ramast his instructions within this question

解决了这个问题