/ / Django konwertuje wszystkie daty w zestawie rekordów na strefy czasowe - python, django, django-timezone

Django konwertuje wszystkie daty w zestawie rekordów na strefy czasowe - python, django, django-timezone

Mam model django, który używa mysql jako db i używam obsługi stref czasowych. Mam pole w moim modelu, które ma datę.

Ponieważ mysql nie może przechowywać informacji o strefie czasowej wewnątrzpole daty, przechowuję przesunięcie strefy czasowej w innym polu. Kiedy wysyłam zapytanie do bazy danych, chcę przekonwertować wszystkie daty na strefy czasowe, używając przesunięcia przechowywanego w bazie danych.

Możesz założyć, że mój model wygląda następująco:

class Item(models.Model):
pubDate = models.DateTimeField(verbose_name="publish date")
pubDate_tz = models.IntegerField()

a moje zapytanie to obecnie:

items = Item.objects.all().filter(channel__category = category, pubDate__range=[today_date, tomorrow_date]).order_by("-pubDate")

Ale w moim szablonie chcę użyć item.pubDate do automatycznego przekonwertowania na moją strefę czasową.

Dzięki.

Odpowiedzi:

0 dla odpowiedzi № 1

spróbuj użyć timezone.make_aware w zapytaniu?

informacje w dokumentach tutaj https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.make_aware https://docs.djangoproject.com/en/dev/topics/i18n/timezones/

podstawowy przykład konwersji na timezone_aware:

today = timezone.now()

today_aware = timezone.make_aware(time_ago, timezone.get_default_timezone())

więc zamieniłeś timezone.now na swoje zapytanie item.pudbate

jeśli strefa czasowa jest zawsze taka sama, możesz ustawićstrefa czasowa używająca drugiego argumentu (timezone.get_default_timezone), jeśli strefa czasowa się zmieni, powinieneś być w stanie ustawić ją jako wartość z bazy danych