/ / Comment suis-je censé restituer un champ de modèle prenant en compte le fuseau horaire avec le réglage de l'heure locale dans django - python, django

Comment suis-je censé rendre le champ de modèle prenant en compte le fuseau horaire avec le réglage de l'heure locale dans django - python, django

Disons que j'avais le code suivant

# settings.py in a proper location
...
TIME_ZONE = "Asia/Seoul"
USE_TZ = True


# models.py in a proper location
class Post(models.Model):
created = models.DateTimeField(auto_now_add=True)
def created_formatted(self):
return self.created.strftime("%Y/%m/%d %H:%M")

Ensuite, j'ai rendu le modèle Django suivant en HTML

before formatting: {{ a_post.created }}  # localtime
after formatting: {{ a_post.created_formatted }}  # not localtime

Je m'attendais à la fois {{ a_post.created }} et {{ a_post.created_formatted }} ont le même fuseau horaire, mais ils ne le font pas. J’ai essayé de savoir comment {{ a_post.created }} est rendu à localtime mais je ne suis pas sûrUne partie du code Django est le bon endroit pour chercher encore. (Ce sera vraiment utile si vous me dites la bonne partie du code source de Django à rechercher). Je souhaite appliquer la même idée à ma created_formatted après avoir découvert comment fonctionne le rendu de datetime dans le modèle django.

p.s. je connais Comment convertir une heure de l'heure compatible avec le fuseau horaire en heure locale en Python. mais comment dois-je réellement le faire manuellement pour chaque méthode que j'ai? Tout conseil serait utile!

Réponses:

2 pour la réponse № 1

De la docs

{% load tz %}

{% localtime on %}
{{ value }}
{% endlocaltime %}

{% localtime off %}
{{ value }}
{% endlocaltime %}

Si vous avez besoin d'un fuseau horaire spécifique

{% load tz %}

{% timezone "Europe/Paris" %}
Paris time: {{ value }}
{% endtimezone %}

{% timezone None %}
Server time: {{ value }}
{% endtimezone %}

Docs pour heure locale, Docs pour fuseau horaire