Shshzik
@Shshzik
Начинающий

Как правильно вывести DateTimefield в Django?

В настройках стоит:
TIME_ZONE = 'Europe/Samara'
USE_TZ = True


В модели:
class A(models.Model):
    created = models.DateTimeField()

    def __str__(self):
        return 'Заявка от {}'.format(self.created.strftime('%d.%m.%Y %H:%M'))


Выводится:
Заявка от 15.05.2018 09:30

А мне необходимо, что бы выводилось так:
Заявка от 15.05.2018 13:30

Если написать так:
def __str__(self):
    return self.created


То выводится:
15 мая 2018 13:30

Вопрос:
Как правильно написать код, что бы всё отображалось как мне необходимо с правильным TZ?
  • Вопрос задан
  • 8611 просмотров
Решения вопроса 1
tema_sun
@tema_sun
Джанго хранит такие объекты в UTC, а временную зону применяет в момент рендера в темплейт. Т.е. вам надо руками это обработать.

from django.utils import timezone
tz = timezone.get_default_timezone()

class A(models.Model):
    created = models.DateTimeField()
    def __str__(self):
        return 'Заявка от {}'.format(self.created.astimezone(tz).strftime('%d.%m.%Y %H:%M'))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы