warnings.warn("DateTimeField %s a reçu une date/heure naïve (%s)"

I use django simple-history to get history on my models
I then search the history results by date but I get the error below. How can I format the date?

RuntimeWarning: DateTimeField HistoricalIssue.history_date received a naive datetime (2022-04-13 10:34:32) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
def SearchByDate(request):
date_search = request.POST['date-search']
if date_search:
admin_hist_search_results = Issue.history.filter(history_date=date_search)


Solution du problème

Tout d'abord, gardez à l'esprit qu'il ne s'agit pas d'une erreur, mais "seulement" d'un avertissement. Il mentionne que l'horodatage entrant (que vous stockez dans la variable date_search) ne contient pas d'informations sur le fuseau horaire, alors que vous le comparez à un champ d'horodatage ( history_datesur model Issue) qui contient des informations sur le fuseau horaire. Cela pourrait potentiellement entraîner des problèmes.

Si vous connaissez le fuseau horaire provenant de la requête, vous pouvez ajouter cette information à l'horodatage, par exemple :

import pytz
amsterdam_timezone = pytz.timezone('Europe/Amsterdam')
date_search = amsterdam_timezone.localize(request.POST['date-search'])

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"