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 № 1spró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