Почему в Django время отображается в 01.01.1900?
Я определил модель:
class Topic(models.Model):
"""A topic the user is learning about"""
text = models.CharField(max_length=200)
date_added = models.TimeField(auto_now_add=True)
def __str__(self):
"""Return a string representation of the model"""
return self.text
Я получаю их в представлении:
topics = Topic.objects.order_by("date-added")
Я работаю над этим проектом уже некоторое время, и темы отображались в правильном порядке, но в какой-то момент я заметил, что они расположены не в хронологическом порядке.
Я попытался посмотреть даты (в оболочке Django):
for topic in Topic.objects.order_by("date_added"):
print(topic, topic.date_added.strftime("%d.%m.%Y $H:%M:%S"))
Результат:
Hip-hop 01.01.1900 10:39:27
Rap2 01.01.1900 10:40:17
Chess 01.01.1900 15:45:32
Rock Climbing 01.01.1900 15:45:43
Programming 01.01.1900 15:51:18
Boxing 01.01.1900 18:21:59
Rap 01.01.1900 20:50:58
В нем показано, что все они добавлены в 1 января 1900 года.
Как настроить дату в Django, чтобы она отображалась правильно?
вы использовали date_added = models.TimeField(auto_now_add=True)
, но в идеале должно быть date_added = models.DateTimeField(auto_now_add=True)
Я думаю, что 1 января 1900 года является датой по умолчанию, так как timefield принимает только значение времени, поэтому он устанавливает дату по умолчанию 1 января 1900 года
TimeField - здесь вы можете видеть, что поле времени используется для времени
DateTimeField - здесь следует использовать datetime для хранения как даты, так и времени date_added
поля