Часовые пояса и фильтры в Django Rest Framework
У нас есть игра, в которой мы отслеживаем ежедневные, еженедельные и ежемесячные таблицы лидеров. Большинство пользователей находятся в США, поэтому мы стараемся, чтобы ежедневные, еженедельные и ежемесячные таблицы обновлялись примерно в американском часовом поясе.
Итак, наша установка довольно проста.
# models.py
class PackGameSavedPack(auto_prefetch.Model):
date = models.DateTimeField(null=True, blank=True)
user_name = models.CharField(max_length=120, null=True)
pack_score = models.IntegerField(null=True)
# save_pack.py
def pack_game_save_pack(user_id, user_name, pack_score=None):
pack = PackGameSavedPack.objects.create(
user_id=user_id,
date=timezone.now(),
user_name=user_name,
pack_score=pack_score,
)
#views.py
class PackGameFilter(django_filters.FilterSet):
user_id = CharInFilter(field_name='user_id', lookup_expr='in')
date_range = DateRangeFilter(field_name='date')
По большей части, это работает отлично - за исключением сохранения всех дат в формате UTC (O offset).
Мы установили параметры USE_TZ
и TIME_ZONE
в файле settings.py, однако, похоже, это ничего не изменило.
USE_TZ = True
TIME_ZONE = "America/Los_Angeles"`
Я знаю, что могу корректировать даты/время на уровне сериализатора, однако это не поможет с DateRangeFilter
, так как он использует часовой пояс UTC (смещение 0).
Как я могу получить DateRangeFilter
, используя TIME_ZONE
или как лучше к этому подойти?