2017-08-04 1 views
1

Ich habe diese folgende Modelldefinition in meinem models.pyUmrechnen in Lokalzeit django queryset

from django.db import models 
class Blog(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 

in meinem settings.py I

TIME_ZONE = 'UTC' 
USE_TZ = True 

habe ich mag die Zeiten in bestimmten Zeitzone erhalten. gerade jetzt, wenn ich Blog.objects.all() anrufen gibt es alle Zeiten in UTC Format. Aber ich möchte die Zeiten in Usertimezone wer angefordert hat.

Ich weiß, dass es hier Filter und Tags gibt. Aber wie ich es tue rest_framework Ich denke, ich muss in der Lage sein, in Queryset zu tun.

Irgendwelche Hilfe?

Edit:

Ich habe die queryset so geschrieben bisher

from django.utils import timezone 
from django.db import models 
Blog.objects.annotate(
    local_create_time = timezone.template_localtime(models.Expressionwrapper(models.F('created'), output_field=models.DateTimeField(), pytz.timezone('Europe/Madrid')) 
) 

Es ist nicht die Daten zu Europe/Madrid timzone konvertieren. aber Ausgabe von Daten in die UTC timzone.

Also überprüfte ich die timzone.template_localtime(value, use_tz=None) Definition.

Für mich use_tz ist vorbei ein tzinfo Objekt aber value ist ExpressionWrapper(F(created))

Antwort

0

In Python können Sie die Zeit in verschiedenen Zeitzonen auf diese Weise erhalten:

from datetime import datetime 
from pytz import timezone 

time_Madrid=datetime.now(timezone('Europe/Madrid')) 
time_UTC=datetime.now(timezone('UTC')) 
time_GMT=datetime.now(timezone('Etc/GMT-3')) 
+0

auch ich möchte, dass meine UTC-Format zu lokalen timeformat umwandeln für alle Modellinstanzen in einem Abfrage-Set. –