Почему в 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 поля

Вернуться на верх