Как я могу конвертировать UTC для пользователей Местный часовой пояс в Джанго? - PullRequest
0 голосов
/ 09 марта 2019

Эти ответы не помогли:

  1. Получение правильного местного часового пояса для конечных пользователей в веб-приложении Django

  2. Django разные часовые пояса в одном приложении

Все данные о времени и дате хранятся в UTC в моей базе данных.

Я бы хотел, чтобы каждый из моих пользователей видел дату и время в местном часовом поясе вместо UTC.Я пробовал код ниже:

settings.py

TIME_ZONE = 'UTC'

USE_TZ = True

views.py

from django.shortcuts import render
from home_app import models
from django.utils import timezone
import pytz

def home_view(request):
    timezone.activate(pytz.timezone('Asia/Kolkata'))
    sample_queryset = models.TimeModel.objects.all()
    return render(request, 'home/home.html', {'sample_queryset': sample_queryset,})

home.html

{% for row in sample_queryset %}
    {% load tz %}
    {% localtime on %}
    {{ row.time }}
    {% endlocaltime %}
{% endfor %}

models.py

from django.db import models

class TimeModel(models.Model):
    sample_text = models.CharField(max_length=255)
    time = models.DateTimeField(auto_now=True)

    def __str__(self):
        return str(self.time) + ' ' + self.sample_text

Однако, в конце концов, то же самое время UTC из базы данныхнапечатано.

Другие детали:

Django 1.11

SQLite (на данный момент; будет использовать Postgres в производстве)

Python 3.60,8

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Я перенесен в Postgres из SQLite и внес следующие изменения:

models.py

До:

из импортных моделей django.db

class TimeModel(models.Model):
    sample_text = models.CharField(max_length=255)
    time = models.DateTimeField(auto_now=True) # changed time to dt

    def __str__(self):
        return str(self.time) + ' ' + self.sample_text

После:

from django.db import models

class TimeModel(models.Model):
    sample_text = models.CharField(max_length=255)
    dt = models.DateTimeField(auto_now=True) # changed time to dt

    def __str__(self):
        return str(self.dt) + ' ' + self.sample_text
0 голосов
/ 10 марта 2019

Проблема выглядит в коде вашего шаблона, это должно быть что-то вроде

{% for row in sample_queryset %}
    {% load tz %}
    {% timezone timezone_string %}
    {{ row.time }}
    {% endtimezone %}

{% endfor %}

Я подозреваю, что здесь местное время часовой пояс, который вы выбрали для вас, это UTC из settings.pyВы должны использовать это вместо часовой пояс

...