Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Django] additionner datetimefield et durationfiel

    31 juillet 2021 à 11:24:48

    Bonjour,

    voici le code dans models.py :

    class Certification(models.Model):
        title = models.CharField(max_length=64)
        date = models.DateTimeField()
        validity_duration = models.DurationField(blank=True, null=True)
    
        @property
        def expiration_date(self):
            if self.validity_duration:
                return self.date + self.validity_duration
            else:
                return datetime.max
        
        def expired(self):
            return self.expiration_date < timezone.now()
    
        def __str__(self):
            return "{%Y} - {}{}".format(self.graduation_date,
                                                          self.title,
                                                          " (expired)" if self.expired else "")
    

    C'est la ligne return self.date + self.validity_duration qui pose problème. L'opérateur __add__() ne serait pas définit pour l'objet DateTimeField.

    Je m'étonne même d'avoir à poser la question sur un forum tellement ça me parait basique comme opération, mais je ne trouve rien sur internet.

    Vous faites ça comment ?

    Edit : le {%Y} à la fin ne fonctionne pas non plus au passage.

    -
    Edité par Megalo 31 juillet 2021 à 11:28:56

    • Partager sur Facebook
    • Partager sur Twitter
      2 août 2021 à 9:09:46

      ça serait pas self.date.date() ?
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        7 août 2021 à 9:45:51

        Effectivement merci, c'est vraiment trop bête.

        Par contre, apparemment on perd l'information du timezone en faisant ça : Le return self.expiration_date < timezone.now() me renvoie l'erreur TypeError: can't compare offset-naive and offset-aware datetimes si je ne remplace pas le timezone.now() par un datetime.now ?

        • Partager sur Facebook
        • Partager sur Twitter
          8 août 2021 à 12:59:55

          Tu as quelques informations sur la documentation qui pourront t'indiquer des manières de travailler avec les objets datetime.

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          [Django] additionner datetimefield et durationfiel

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown