Как преобразовать модель DateTimeField Django в местный часовой пояс и использовать объект Q для фильтрации - PullRequest
2 голосов
/ 12 апреля 2019

Как преобразовать поле даты и времени в местное время и создать объект Q для получения набора данных?

settings.py

LANGUAGE_CODE = 'en-us'
USER_TIME_ZONE = ‘US/Pacific’
TIME_ZONE = 'UTC'
USE_TZ = True

models.py

class Hello(models.Model):

  lucky_day = models.DateTimeField()

Одна запись в дБ (формат UTC)

2019-02-03 03: 02: 45

filter.py

# Client browser is Pacific time without time, date only.
localtime_str = '2019-3-2' 

qset_filter = Q(lucky_day<to Pacific time from UTC>=localtime_str)

1 Ответ

0 голосов
/ 12 апреля 2019

Если вы действительно хотите сначала преобразовать поле даты-времени utc в локальное время-дату, а затем хотите выполнить фильтрацию по местному времени-дате, вы можете использовать агрегирование django, чтобы сделать это следующим образом:

YourModel.objects.annotate(new_local_datetime_field=convert_to_local_datetime('lucky_day')).filter(Q(new_local_datetime_field=some_other_datetime))

Ссылка напреобразовать utc datetime в локальную дату: Преобразовать строку даты и времени UTC в локальную дату и время

ссылка на аннотацию django: https://docs.djangoproject.com/en/2.2/ref/models/querysets/#django.db.models.query.QuerySet.annotate

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