Как отобразить DateTimeField, хранящийся в IST, в дБ в самом IST, при условии, что USE_TZ = True? - PullRequest
0 голосов
/ 04 апреля 2019

Итак, я новичок в Django и установил мой часовой пояс как «Азия / Калькутта» и USE_TZ = True в файле настроек. Для даты и времени, которые хранятся в базе данных UTC в базе данных, отображение отображается в моем текущем часовом поясе. Однако для даты и времени, которые хранятся в IST в БД, администратор добавляет +5: 30 для отображения (т. Е. Предполагается, что значения в БД находятся в UTC)

Я хочу найти способ вручную сообщить этим моделям / администраторам, что USE_TZ = False для них.

Я попытался расширить DateTimeField и переопределить функцию get_internal_type для возврата CharField, а не DateTime. Это работает хорошо, а также. Тем не менее, я не понимаю, как это на самом деле работает в фоновом режиме.

class MyDateTimeField(DateTimeField):
    def get_internal_type(self):
        return "CharField"

class FileUpload(models.Model):
    ....
    ....
    created_at = models.MyDateTimeField(auto_now_add=True)
    updated_at = models.MyDateTimeField(auto_now=True)

Кроме того, в долгосрочной перспективе я немного осторожен с изменениями уровня модели и хочу знать, может ли что-нибудь еще решить эту проблему.

1 Ответ

2 голосов
/ 05 апреля 2019

с даты и времени импорта, даты и времени

CURRENT_TIME = datetime.now ()

create_at = models.DateTimeField (по умолчанию = current_time.strftime ("% G-% m-% d% H:% M:% S"), пусто = True)

или

create_at = models.CharField (по умолчанию = current_time.strftime ("% G-% m-% d% H:% M:% S"), пусто = True)

Если вы не хотите указывать время по умолчанию, просто укажите default = '' для CharField. Для форматирования значения даты и времени я использовал strftime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...