Mon modèle a un champ de date et je veux filtrer le modèle au cours des 7 derniers jours.
TypeError: can't subtract offset-naive and offset-aware datetimes
3 Réponses :
de Zones horaires - Documentation Django :
Lorsque la prise en charge de fuseau horaire est activée (UTILISE_TZ = TRUE), Django utilise des objets DateTime au courant de la zone horaire. Si votre code crée des objets DateTime, ils doivent également être conscients. Dans ce mode, l'exemple ci-dessus devient: p>
from django.utils import timezone now = timezone.now()
Vous pouvez obtenir cette requête à l'aide de l'opérateur de plage, comme celui-ci. EDIT: Pour réaliser ce type de requête avec la méthode du filtre, votre valeur générée doit être un champ modèle. Vous pouvez y parvenir en remplaçant la méthode de sauvegarde comme celle-ci: p> DJANGO DOCS P> P>
Merci, c'est une bonne réponse, mais malheureusement, pas celui dont j'ai besoin parce que je viens de découvrir que je ne peux pas filtrer les méthodes des modèles.
@RICARDO Pourquoi ne pas convertir le champ de méthode en champ de modèle, vous pouvez ajouter la logique de calcul en remplaçant la méthode de sauvegarde.
Ashtanga merci pour votre aide! J'y regardais déjà (je ne savais pas sur l'écrasement de la méthode de sauvegarde). J'ai fait ça marche :) merci
Vous voulez filtrer le queryset et obtenir un compte si Stamped_Date est dans les sept jours suivant
Vous allez vous faire justice si cela est une obligation standard de construire un gestionnaire de modèle pour gérer ce P>
Vous visez. Parce que, en faisant cela, vous pouvez appeler compter () sur votre requête retournée. P> manager de modèle serait comme si, p> pour être honnête, votre timbred_date doit être un attribut de champ qui devrait fonctionner avec votre méthode de sauvegarde de votre modèle pour que sa Un peu déroutant pourquoi vous l'avez fait comme vous l'avez fait. Sous la méthode de sauvegarde (standard) Laissez l'instance de modèle Vérifiez chaque fois qu'il n'y a pas d'heure de début et sauvegardez le champ DateTime Self.Access que je ne vois pas référence ici au champ Stamped_Date P> juste pour Une cerise sur le dessus, serait peut-être meilleure de permettre à un argument du manager modèle de dire combien de jours de sorte que ce n'est pas fixé à sept jours. p> p>
Salut @quintin, réponse impressionnante !! Comment remplacez-vous la méthode de sauvegarde? Est-ce un bon exemple: Stackoverflow.com/Questtions/4269605 / ... ? Je suis nouveau à Webdev, donc excuser mon manque d'informations sur de tels sujets de base. À propos, où obtenez-vous le "start_date" sur le filtre QuerySet que vous avez montré?
Toutes mes excuses qui étaient une faute de frappe. Devrait être start_time. Modifié en conséquence. Le sujet ci-dessus pour Save est parfait. Vérifiez simplement s'il y a un champ Stamped_Date avec une instruction IF dans votre méthode de sauvegarde et attribuez une valeur si vide, sur l'exemple de sauvegarde. Retourne toujours super dans votre méthode de sauvegarde après votre code
Cela ne fonctionnerait pas parce que je dois filtrer sur le "Stamped_Date", pas sur le "start_date" qui n'est pas un champ obligatoire. Quoi qu'il en soit, je l'ai déjà fait avec la méthode Save ()! Merci beaucoup